如何将PHP函数转换为非函数?

时间:2009-10-31 18:39:54

标签: php refactoring

如何将下面代码中的php函数转换为非函数。

<?php
require_once ('./mysqli_connect.php'); // Connect to the db.

function make_list ($parent)
{
    global $tasks;
    echo '<ol>';
    foreach ($parent as $task_id => $todo)
    {
        echo "<li>$todo";
        if (isset($tasks[$task_id]))
        { 
            make_list($tasks[$task_id]);
        }
        echo '</li>';
    }

    // Close the ordered list:
    echo '</ol>';
}

$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT task_id, parent_id, task FROM tasks WHERE date_completed='0000-00-00 00:00:00' ORDER BY parent_id, date_added ASC");

if (!$dbc)
{
    // There was an error...do something about it here...
    print mysqli_error();
} 
$tasks = array();

while (list($task_id, $parent_id, $task) = mysqli_fetch_array($dbc, MYSQLI_NUM))
{
    // Add to the array:
    $tasks[$parent_id][$task_id] =  $task;
}

make_list($tasks[0]);

mysqli_close(); // close the connection

// Include the html footer
include('./includes/footer.html');
?>

保留我的代码是不是更好,即使我没有发布的其余代码是非函数形式。

2 个答案:

答案 0 :(得分:8)

首先:您无法以简单的方式将递归函数转换为意大利面条代码。
第二:没有必要这样做。将您的逻辑,操作分离为函数,以及逻辑和数据表示。不要使用html标记垃圾邮件代码。使用某种模板机制。

答案 1 :(得分:1)

除了erenon的答案(我完全支持,他已经说明了为什么你的问题导致错误的方向):

使用(或创建)一些隐藏连接,查询执行等的数据库抽象类,这样可以更容易地更改数据库或以后适应界面更改,并且您有一个错误处理的中心位置。

并且不要以超级用户身份与数据库通信..