私は設定されていない可能性がある変数を持つ関数を呼び出すことはできますか?

私はそれをクリーンアップするために私のコード内に関数を作成しています。そのうちの1つはページネーションのオフセットを計算するためのものです。

この関数は

function pageOffSet($page, $count, $resultsPerPage) {
    //WORK OUT HIGHEST PAGE NUMBER
     $pageCount = ceil($count/$resultsPerPage);
    //IF GET PAGE VARIABLE IS HIGHER THAN MAX PAGE POSSIBLE
     if (isset($page) && $page > $pageCount) {
          $page = $pageCount;
    //IF VALID GET PAGE VARIABLE
     } elseif (isset($page) && is_numeric($page) && $page > 1) { 
          $page = $page;
    //IF PAGE GET VARIABLE NOT SET
     } else { 
          $page = 1;
     }
    //OFFSET FOR POST RESULTS
     $offSet = ($page - 1) * $resultsPerPage;
     return array('offSet' => $offSet, 'resultsPerPage' => $resultsPerPage);
}

そして、

$page = pageOffSet($_GET['page'], $count, 15);

$ _GET ['page'] を設定したり、設定を解除したりすることはできません。私はそれが設定されているかどうかを確認するために関数の内部をチェックしますが、これを行うには大丈夫ですか?私はエラーは表示されませんが、チェックしたいだけですか?

0
E_NOTICEメッセージを生成します: codepad.org/0Th4zTT0
追加された 著者 ComFreek,
Btw、ここではデフォルトのパラメータ値を使用します:function pageOffSet($ count、$ resultsPerPage、$ page = 1)。それで$ pageが常にセットされていることが分かります。
追加された 著者 artshpakov,
それで私のページネーションはうまくいかないでしょうか?!?!?
追加された 著者 cgwebprojects,

2 答え

$ _ GET ['page'] にアクセスすると、PHPはインデックスが設定されていないことを通知します。通知が表示されない場合は、 ERROR_REPORTING を調整します。開発環境では常に注意書きを表示する必要があります。

変数が設定されているかどうかを調べるために、次のようなものを使用します(そして、intにキャスト):

$pageNumber = isset($_GET['page']) ? (int) $_GET['page'] : 0;
$page = pageOffSet($pageNumber, $count, 15);
4
追加された
エラー報告とキャストの+1。 IMOでは、中間変数を持つ別の行に isset 三項項を入れれば、コードはより明確になります。
追加された 著者 mvds,

エラーは発生しませんが、エラー報告の設定に応じて、おそらく警告が生成されます。しかし、より良いアプローチは、デフォルトの引数を使用するかもしれません:

function pageOffSet($count, $resultsPerPage, $page = NULL) { ... }

次に $ page があるかどうかを調べるには、

if ($page)

または、それがないかどうかをチェックするには、次のようにします:

if (!$page)

こうすることで、最初の2つの引数を最後の引数を指定することなく使用できます。または3つすべてを提供することができます。 $ page を使用するには、 NULL かどうかをチェックし、それに応じて使用します。

1
追加された
これはすばらしい解決のように思えますが、PHPがスカラー引数を使用できるかどうかわかりませんでした!
追加された 著者 cgwebprojects,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com