変数変数。 プロパティのプロパティ。 スーパーグローバル配列からのデータの初期化は迅速かつ簡単です



$ _REQUESTスーパーグローバル配列を例として使用して、スーパーグローバル配列のハンドラーを実装するという興味深いアイデアがあります。

フォームから受信したデータを受信、処理、保護する簡単な方法など。 のように見える



if (!isset($_REQUEST['var'])) $var = NULL; else $var = $_REQUEST['var']; //      
      
      





もちろん、すべての自尊心のあるフレームワークは、たとえば、プロジェクト内の任意の場所で使用できる個別の静的クラスメソッドを考え、必要な値を名前で簡単に取得する場合など、より美しくなります。



  class Request { public static function GetVarRequest( $var ){ if (!isset($_REQUEST[$var])) $var = NULL; else $var = $_REQUEST['var']; //       return $var; } } $var = Request::GetVarRequest('var');
      
      





そして最後に要点を説明します。 PHPには、「 変数の変数 」(シンボリックリンク)などの概念があり、このソリューションに私を駆り立てました。 説明と例をコピーしても意味がありません。



これは上記とどのように関係しますか? 自転車を思いついたのかもしれませんが、それでも。 すぐに実用的なソリューションの一部を提供します:



  //  ,      $_REQUEST[ 'var1' ] = 'VAR1'; $_REQUEST[ 'var2' ] = 'VAR2'; $_REQUEST[ 'var3' ] = 'VAR3'; echo '<pre>'; print_r( $_REQUEST ); echo '</pre>'; $r = $_REQUEST; $k = array_keys( $r ); $c = count( $r ); for ( $i = 0; $i < $c; $i++ ){ $v = $k[ $i ]; $$v = $r[ $k[ $i ] ]; //       } echo '<br />var1 - '.$var1; // : "var1 - VAR1" echo '<br />var2 - '.$var2; // : "var2 - VAR2" echo '<br />var3 - '.$var3; // : "var3 - VAR3"
      
      





さらに、これはクラスのプロパティを使用して実行できます。



  class VarsVar { //     } $obj = new VarsVar(); $_REQUEST[ 'var1' ] = 'VAR1'; $_REQUEST[ 'var2' ] = 'VAR2'; $_REQUEST[ 'var3' ] = 'VAR3'; echo '<pre>';print_r($_REQUEST);echo '</pre>'; $r = $_REQUEST; $k = array_keys( $r ); $c = count( $r ); for ( $i = 0; $i < $c; $i++ ){ $v = $k[ $i ]; $obj->$v = $r[ $k[ $i ] ]; } echo '<br />var1 - '.$obj->var1; // : "var1 - VAR1" echo '<br />var2 - '.$obj->var2; // : "var2 - VAR2" echo '<br />var3 - '.$obj->var3; // : "var3 - VAR3"
      
      





つまり、このケースを静的関数でフレーム化し、クラスのインスタンスのオブジェクトを(まだ100%テストされていない状態で)渡すと、いつでもどこでも初期化できます。



  class Request { public static function GetVarRequest( $obj ){ $r = $_REQUEST; $k = array_keys( $r ); $c = count( $r ); for ( $i = 0; $i < $c; $i++ ){ $v = $k[ $i ]; $obj->$v = $r[ $k[ $i ] ]; } } } class VarsVar {} $obj = new VarsVar(); Request::GetVarRequest( $obj ); //  PHP 5           ,   .
      
      





要約すると、

短所



長所





結論:普遍的で非常に簡単な方法を使用して、$ _REQUESTから不要ながらくたなしでデータを取得できます。 データが常に100%に達していることを確認し、OOPを使用すると、クラスプロパティが初期化され、フラグとしてのこのメソッドが手に入ります=))



この決定は今日だけで始まり、あなたと共有しているため、まだ戦闘でテストされていません。 ここにいくつかの簡単なルールが適用されます:



そしてもちろん、ファンタジーの世界からのクレイジーな発言。 たとえば、この種類の$$$ var変数がPHPコアに縫い付けられていて、初期化がないためにアクセスするとエラーが表示されず、そのような変数がすぐにNULL値で作成される場合、私が提案した方法は問題なく動作します。



All Articles