書かれたものはすべて、イデオロギーに忠実であると主張せず、コントローラーの実例ではなく、1分の1を無意識にコピーすることは推奨されません。
Symfony2で覗いた関数の引数に、URLに直接渡される必要なパラメーターを書くというアイデア。 ルートを識別するためにPHPdocコメントが使用されました。
たとえば、次のようなコントローラーを確認します。
class Controller { function testAction ( $a, $b = 'something' ) { echo 'a: '.$a.', b: '.$b; } }
警告にもかかわらず、1 in 1の例を使用する場合は、注意してください。
-Reflection APIが遅い
-難読化の不可能性
-アーキテクチャの非自明性とイデオロギーの歪み
-チームまたはサードパーティの開発者によるサポート/開発で起こりうる問題。
したがって、タスク:変数「a」が渡されない場合、または「余分な」変数が渡される場合、エラーが生成されます。変数「b」が指定されない場合、デフォルト値が置き換えられます。 両方の変数は、PHPDocで規定されている正規表現に対してチェックされます。
その結果、検証機能は次のようになりました。
function CheckURLValid ( $class, $method, $values_arr = array() ) { $class = new ReflectionClass( $class ); $method = $class->getMethod( $method ); $param = $method->getParameters(); $doc = $method->getDocComment();
使用例: try { $arr = CheckURLValid( 'Controller', 'testAction', $_GET ); call_user_func_array( array('Controller', 'testAction'), $arr ); } catch ( Exception $e ) { echo $e->getMessage(); }
タイプのさまざまなバリエーションを駆動できます。/test.php
/test.php?a=abc
/test.php?a=12
/test.php?a=12&b=another
/test.php?a=12&c=13
1つのファイルを
選択でき
ます 。