【问题标题】:php code reuse. Is there a better way to do it?php代码重用。有更好的方法吗?
【发布时间】:2015-12-31 09:48:01
【问题描述】:

我已经升级了我的代码。在旧代码中,我有 2 个函数:display_maker_success()display_maker_fail(),但我意识到我可以通过在函数中添加更多参数来将这两个函数合并为一个 display_maker_stat()。非常喜欢!

有更好的方法吗?我想要更多的代码重用。

function display_maker_success($link, $userid){
    $status="closed";
    $result="completed";

    $sql = "select start, name from wuuk where tasker_id ='$userid' and status ='$status' and result ='$result' order by id desc LIMIT 6;";

    $result = mysql_query($sql, $link);
    $isempty=mysql_num_rows($result);
    If ($isempty ==0) {
        echo "No Record";
    } else {
        echo "<table border=1>";
        echo "<tr><th>Date & Time</th><th>Name</th><th>Status</th></tr>";
        while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
            echo "<tr><td>$row[0]</td><td>$row[1]</td><td>Completed</td></tr>";
        };
        echo "</table>";
    };
};

function display_maker_fail ($link, $userid) {
    $status="closed";
    $result="fail";

    $sql = "select start, name from wuuk where tasker_id ='$userid' and status ='$status' and result ='$result' order by id desc LIMIT 1;";
    $result = mysql_query($sql, $link);
    $isempty=mysql_num_rows($result);
    If($isempty ==0){
        echo "No Record";
    } else {
        echo "<table border=1>";
        echo "<tr><th>Date & Time</th><th>Name</th><th>Status</th></tr>";
        while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
            echo "<tr><td>$row[0]</td><td>$row[1]</td><td>fail</td></tr>";
        };
        echo "</table>";
    };
};

function display_maker_stat ($link, $userid, $reuslt, $limit) {
    $status="closed";
    $result="fail";

    $sql = "select start, name from wuuk where tasker_id ='$userid' and status ='$status' and result ='$result' order by id desc LIMIT 1;";
    $result = mysql_query($sql, $link);
    $isempty=mysql_num_rows($result);
    If($isempty ==0){
        echo "No Record";
    } else {
        echo "<table border=1>";
        echo "<tr><th>Date & Time</th><th>Name</th><th>Status</th></tr>";
        while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
            echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$result</td></tr>";
        };
        echo "</table>";
    };
};

【问题讨论】:

  • 我不明白为什么不...您总是可以通过更加面向对象来提高代码的可重用性
  • 我认为这种问题可能更适合codereview.stackexchange.com。虽然您可能应该停止使用deprecated mysql library 并确保您的代码在您去那里之前不会受到SQL injection 的攻击,否则您可能会淹没在关于这些的建议中......(虽然不要误会我的意思,我认为这是一个很好的问题,你想像这样改进你的代码真是太好了。)

标签: php code-reuse


【解决方案1】:

试试下面,

您的代码中也有一些错误,我已经更正了它们。

function display_maker_stat($link, $userid, $reuslt = 'fail', $limit)
{
    $status = "closed";
    $html = '';
    $sql = "select start, name from wuuk where tasker_id ='$userid' and status ='$status' and result ='$result' order by id desc LIMIT 1;";
    $query = mysql_query($sql, $link);
    if (mysql_num_rows($query) != 0) {
        $html .= "<table border=1>";
        $html .= "<tr><th>Date & Time</th><th>Name</th><th>Status</th></tr>";
        while ($row = mysql_fetch_array($query, MYSQL_NUM)) {
            $html.= "<tr><td>$row[0]</td><td>$row[1]</td><td>$result</td></tr>";
        }
        $html.= "</table>";
        echo $html;
    }
    else {
        echo "No Record";
    }
}

阅读OOP

【讨论】:

  • thx :) $html 是 grt!所以现在我不必使用“回声”一百次了!如果我想用 OOP 写这个。我该怎么做?
  • @n00dle 您的欢迎..关于 OOP,串联将是相同的 :)..但是其他像 mysqli connect 或任何会有变化..我还想推荐你去codeigniter 之类的框架..您还可以阅读有关 OOP 的更多信息,检查我的答案..
  • thx jlocker ;) 你是 grt 帮助!关于codeigniter,我以前从未使用过第三方。但我不介意试一试。是否在此链接上codeigniter.com。直接下载好吗?
  • @n00dle 欢迎您...是的,您可以访问codeigniter official 并下载最新版本 3.0.2..如果您需要任何帮助...告诉我随时:)
  • thx ;) 有聊天系统,所以你直接和 ppl 交谈?顺便说一句,我下载 codeingniter 但使用第三方对我来说是新的:/
猜你喜欢
  • 2018-10-09
  • 2023-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多