0

ページ付けと列の並べ替えの可能性を使用して、いくつかのテーブルを拡張しました。これまでのところすべて正常に動作していますが、最大10ページでまったく同じコードを使用できるので、関数を使用することを考えましたが、すべての部分に関数を使用することが合理的かどうか(パフォーマンスなど)はわかりません。いくつかのことを組み合わせる必要がある場合は、アドバイスが必要です。

現在、1ページのコードは次のようになっています(すべての数値が関数である可能性があります)。

$limit = 30;

1.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.2。

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

3.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.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.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つの目的/変数に1つの関数)。より多くの関数/ページを呼び出します。

4

1 に答える 1

1

短編小説。はい。

かなり簡単です。関数に何かを入れて再利用できるようにすることが可能であれば、そうしてください!それはあなたのコードを整理し、あなたはそれをより簡単に再利用することができます。それ以外の場合は、とにかく関数に配置するために、後でコードを書き直す必要があります。そうです、そうして、必要に応じてすべてのファイルからアクセスできるようにします。

また、可能であれば、関数を完全に理解するために関数から始めてみてください。そうであれば、OOPから始めてください。それはあなたの人生をとても楽にしてくれるでしょう。これがお役に立てば幸いです。

私はあなたのコードを書き直すつもりはありません、あなたがあなた自身でそれをするならば、それはあなた自身にとって良い習慣だと思います。それが難しく、自分でそれを終えることができない場合は、SOで気軽に質問してください:)

  • 編集:あなたが話しているパフォーマンスについては、心配しないでください。関数は、コピー貼り付けよりも0.00000000001ナノ秒遅い可能性があります。ただし、読みやすさとプログラミングを重要視する場合は、関数を使用してください。コードがどのように見えるかを気にせず、5日間を費やしたい単純な微調整の場合は、関数を使用しないでください;)
于 2012-08-28T07:06:12.817 に答える