"ベストプラクティス"という質問があります。私はPHPでOO MVCフレームワークを開発しています。クラスのほとんどは簡単に相互作用します。それらは文字通りコード内で宣言されて使用されます。たとえば、OOP PHP - オブジェクトと関数の名前を動的に構築/実行する
// In class 'getDetails'
$db = new mysqli(.....);
$db->query(.....);
ただし、クラス名と関数名が動的に作成されることがあります。実際のクラスファイルはすべてフレームワークのどこかに作成され、配置されていますが、すべてが文字通り宣言され使用されるわけではありません。実行時までは、フレームワークが要求を完了するためにどのクラスを必要としているかを知ることはできません。そのため、クラス名と関数名は通常作成され、変数に格納されます。最も単純なケースでは、変数はオブジェクトの作成と関数の実行に使用されます。例:静的関数を実行するために、変数を使用しようとすると
$request = 'blog';
$action = 'view';
$class = new $request(); // Creates an blog object
$class->$action(); // Runs the blog function view
しかし、私はすでに変数はリテラル用法で使用することができませんでした(hereは、スタックオーバーフローの質問と答えです)
事態に遭遇してきました($ request :: $ action()は解析エラーを出します)。私は、クラス、関数、オブジェクトの相互作用/使用のためのPHPマニュアル関数を見てきましたが、これまでに対処する必要はありませんでした。
私の質問は、クラスと関数の名前が実行時に作成されるクラスと関数を処理して実行する最良の方法は何ですか?
KISSの原則(http://en.wikipedia.org/wiki/KISS_principle)を読むことができます。 Zend、CakePHP、CodeIgniter、Symphonyなどを使用してください。 – inakiabt
私はKISSを理解していますが、Zend、CakePHP、CodeIgniterなどもこの同じ問題に直面しています。彼らはちょうど解決し、ユーザーからそれを抽出しました。 –