0

動的パラメーターを使用して新しいクラス インスタンスを作成しようとしています。

$controller = 'className';
$parameters = array('hello', 'world');
new $controller($parameters);

を介してメソッドを呼び出した場合のように、パラメータをクラスに自然に渡したい場合を除いて、call_user_func_array();パラメータを配列で渡す必要はありません。

call_user_func_array();コンストラクターを効果的に呼び出しながらクラスを開始する方法はありますか? または、コンストラクターの自動実行を防止しcall_user_func_array();て、プロパティを配列として使用して実行できるようにすることもできますか?

私の実際のコードは次のとおりです。

if(!class_exists($controller)) require('controllers/' . $controller . '.php');
return new $controller();

のようにパラメーターの配列をコンストラクターに渡すこともできますが、$controller($parameters)個々のパラメーターとしてではなく、すべて 1 つの配列になります。

完全なファイル ソースは、 https ://github.com/pyrokinetic/mfw/blob/master/libraries/load.lib.php のコンテキストで表示できます。

4

2 に答える 2

1
$reflect  = new ReflectionClass($class);
$instance = $reflect->newInstanceArgs($args);

Source

于 2013-04-08T23:59:29.033 に答える