2017-05-25 6 views
0

は私のコードです:スーパーグローバルをPHPコードで初期化していますか?ここ

$order_newest = $order_votes = $order_featured = $order_frequent = ''; 

    if (isset($_GET['o']) || isset($_COOKIE['qanda_questions_order'])) { 

     // To read from the cookie 
     if (!isset($_GET['o'])) { 
      $_GET['o'] = $_COOKIE['qanda_questions_order']; 
     } else { 
      setcookie("qanda_questions_order", $_GET['o'], 2147483647); 
     } 

     switch ($_GET['o']) { 
      case 'newest': 
       $order_newest = 'order_active'; 
       break; 
      case 'votes': 
       $order_votes = 'order_active'; 
       break; 
      case 'featured': 
       $order_featured = 'order_active'; 
       break; 
      case 'frequent': 
       $order_frequent = 'order_active'; 
       break;           
      default: 
       $order_newest = 'order_active'; 
       break; 
     } 

    } else { 
     $order_newest = 'order_active'; 
    } 

見ての通り、私はこの行のsupergobalを初期化してきました:

$_GET['o'] = $_COOKIE['qanda_questions_order']; 

が正しいことことをしているのですか?または、超大国のみをURL (取得方法)の渡されたパラメータとして使用する必要がありますか?

さらにこのロジックを書くことができますか? (私にはプロフェッショナルではないようです)

+0

なぜ、別の変数の代わりにスーパーグローバルを使用していますか? –

+0

@ Don'tPanic * 'switch'でスーパーグローバルを使用したので* –

+0

これは完璧です。 '$ o = $ _GET ['o'];'を実行してから '$ o'を使用する必要がなくなります。 – AbraCadaver

答えて

1

意見は異なりますが、私の意見では、PHPであらかじめ埋め込まれたスーパーグローバルを変更することは実際には悪いことです。私はいつもそれらを書込みから止めることは何もないのに、自分自身を「読み取り専用」変数($_SESSIONを除いて)として扱います。私は個人的に、このために変数を使用します。

if (isset($_GET['o']) || isset($_COOKIE['qanda_questions_order'])) { 
    $order = isset($_GET['o']) ? $_GET['o'] : $_COOKIE['qanda_questions_order']; 
    setcookie("qanda_questions_order", $order, 2147483647); 

    switch ($order) { 
     // etc. 
    } 
} 
1

どちらか私はスーパーグローバルを変更するに何か問題がないと思うが、あなたはそうする必要はありません、とあなたは別の変数を作成する必要はありません。

if (isset($_GET['o'])) { 
    setcookie("qanda_questions_order", $_GET['o'], 2147483647); 
} 

switch ($_GET['o'] ?? $_COOKIE['qanda_questions_order'] ?? '') { // ... cases 
関連する問題