たとえば、単純な MVC タイプ システム:
/api/class/method
を使用して PHP 変数に書き直して.htaccess/nginx.conf
から、次のようにします。
<?php
// Set up class + method variables
$className = some_class_filter($_GET['class']);
$method = some_method_filter($_GET['method']);
// Check if class exists and execute
if(file_exists(BASE . "/controllers/" . $className . ".class.php")) {
require BASE . "/controllers/" . $className . ".class.php";
$$className = new $className();
// Execute the method
$$className->$method();
} else {
// Spit out some error based on the problem
}
?>
これはひどく悪い習慣ですか?それが悪い習慣である場合、誰かがその理由を正確に説明できますか? もしそうなら、私がしていることを行うためのより良い方法はありますか?
編集基本的に、私が可変変数を使用している理由は、コアシステムを簡単に拡張できるようにするためです。つまり、新しいコントローラーを追加するのは素晴らしく簡単です。私は、本質的にあらゆる関数やクラスを何らかのフィルターなしでインスタンス化できるようにすることのセキュリティ リスクを明確に理解しています。
「some_filter_here」は、許可されているコントローラーのリストである可能性があります-ここで言及したホワイトリスト。