0

我扩展了一些带有分页的表格和对列进行排序的可能性。到目前为止一切正常,但我最多可以在 10 页上使用相同的代码,所以我考虑使用函数,但我不确定为每个部分使用函数是否合理(性能等)或如果我应该结合几件事,所以我需要一些建议..

目前一页的代码如下所示(每个数字都可以是一个函数):

$limit = 30;

1.

$sql = 'SELECT
            COUNT(`news_id`)
        FROM
            `news`';

$stmt = $db->prepare($sql);
$stmt->execute();
$stmt->bind_result($count);
$stmt->fetch();
$stmt->free_result();
$stmt->close()

2.

if ($count === 0)
{
    $max_pages = 1;
}
else
{
    $max_pages = (int)ceil($count/$limit);
}

3.

if (isset($_GET['page']))
{
    if (preg_match('/^[0-9]{1,}$/', $_GET['page'])
    && ($_GET['page'] > 1
    && $_GET['page'] <= $max_pages))
    {
        $current_page = (int)$_GET['page'];
        $offset = ($current_page - 1) * $limit;
    }
    else
    {
        header('location: http://' .SERVERNAME. '/admin/news/');
        exit;
    }
}
else
{
    $current_page = 1;
    $offset = 0;
}

4.

$valid_sort = array('id', 'date', 'title');

if (isset($_GET['sort']))
{
    if(in_array($_GET['sort'], $valid_sort))
    {
        $sort = $_GET['sort'];
    }
    else
    {
        header('location: http://' .SERVERNAME. '/admin/news/');
        exit;
    }
}
else
{
    $sort = 'id';
}

5.

$valid_order = array('asc', 'desc');

if (isset($_GET['order']))
{
    if(in_array($_GET['order'], $valid_order))
    {
        $current_order = $_GET['order'];
    }
    else
    {
        header('location: http://' .SERVERNAME. '/admin/news/');
        exit;
    }
}
else
{
    $current_order = 'desc';
}

由于 4 和 5 几乎相同,我可以在这里使用不同的参数调用相同的函数,但我仍然不确定调用最多 5 个函数是否真的有意义..

最后我需要以下变量:$limit, $count, $max_pages, $current_page, $offset, $sort, $current_order

编辑:为了清楚起见,问题不在于函数如何工作,或者是否可以在这里使用它们。问题是,一个函数应该与我想用它做什么相关联有多复杂?例如,我可以编写一个具有 120 行和 8 个参数的函数,但我只需要调用 1 个函数/页面......或者我可以保持简短(1 个函数用于 1 个目的/变量),但我需要调用更多功能/页面..

4

1 回答 1

1

长话短说。是的。

这很简单。如果可以将某些东西放入函数中并使其可重用,那就去做吧!它将组织您的代码,您可以更轻松地重用它。否则,您将不得不在之后重写代码以将其放入函数中。所以是的,如果有必要,这样做并使其对每个文件都可访问。

另外,如果可能,请尝试从函数开始以完全理解它们,如果可以,请从 OOP 开始!它会让你的生活变得更轻松。我希望这有帮助。

我不会重写你的代码,我认为如果你自己做这对你自己来说是个好习惯。如果这很难并且您自己无法完成,请随时询问 SO :)

  • 编辑:关于你所说的表现,别担心。一个函数可能比复制粘贴慢 0.00000000001 纳秒。但是,如果您将可读性和编程考虑在内,请使用函数。如果您不关心代码的外观,并且想要花 5 天时间进行简单的调整,请不要使用函数;)
于 2012-08-28T07:06:12.817 回答