PHP OOP:处理mysqli LEFT JOIN和数组的内容


PHP OOP: Handling contents of mysqli LEFT JOIN and array

我一直在从PHP过程编程转向OOP。我有一个mysql数据库,其中有两个表,它们之间的关系是1对多,我需要在列表中显示这些信息。我已经写了下面的代码,尽管代码执行得很好,但我真的不知道这是否是最好的方法,如果我还在"程序化"思考的话。我准备了以下声明:

$stmt = $mysqli_conn->prepare("SELECT display_name, 
                                        display_department, 
                                        display_region, 
                                        group_concat(approach_name) as approaches,
                                        group_concat(length) as lengths,
                                        group_concat(ascent) as ascents,
                                        group_concat(gradient) as gradients
                                FROM table1 LEFT JOIN table2 
                                ON table1.col_name=table2.col_name 
                                GROUP BY table1.col_name");

这是下面的PHP代码:

$stmt->execute();
$stmt->bind_result($display_name, $display_department, $display_region, $approaches, $lengths, $ascents, $gradients);
while($stmt->fetch()) {
    echo  $display_name. '&nbsp|&nbsp'.$display_department.'&nbsp|&nbsp'.$display_region.'<br>';
    $arr_approaches = explode(',', $approaches);
    $arr_lengths = explode(',', $lengths);
    $arr_ascents = explode(',', $ascents);
    $arr_gradients = explode(',', $gradients);
    $arrayLength=sizeof($arr_approaches);
    for ($i=0; $i<$arrayLength; $i++) {
        echo $arr_approaches[$i].'&nbsp-&nbsp'.$arr_lengths[$i].'&nbsp|&nbsp'.$arr_ascents[$i].'&nbsp|&nbsp'.$arr_gradients[$i];
                echo '<br>';
    }
    echo '<br>';
    unset($arrayLength);
}  
$stmt->close();

具体来说,我应该创建一个类来分解和显示结果,而不是我在这里是如何做到的吗?

除非有明显的好处,否则很难从一种有效的编码风格转换到另一种有效编码风格。

在本例中,任意移动到OOP可能只会导致执行相同操作的不同代码。因此,如果这是您使用和输出这些数据的唯一方式,程序代码将为您提供所需的所有直接性和特异性。过程代码擅长一次性任务。

但是一旦你开始构建类,你就会开始考虑代码重用和灵活性。例如,该代码将数据与直接HTML输出混合。如果将这些相同的数据可选地以CSV、HTML表或可折叠树视图输出可能很方便,那么OOP将有助于将数据结果与输出格式分离。