0

私は持っています:

public $staticRoutes = array(
        'dog-toys' => 'Index',
        ) ;

if(array_key_exists($controller, $this->staticRoutes))
{
    $controller = new $controller ;
}

新しい$controllerは「犬用おもちゃ」になりつつありますが、これは私が望んでいることではありません。

どうすれば自分の持っているものを変更でき$controller = new Index ;ますか?

4

2 に答える 2

2

いくつかのバリエーション:

$controller = new ${staticRoutes[$controller]} ;

現在テストできないので、安全のために次のこともできます。

$ctrl = $staticRoutes[$controller];
$controller = new $ctrl;
于 2012-12-03T20:06:10.117 に答える
1

$staticRoutes実際には、次のように配列を使用する必要があります。

$controller_instance = new $this->staticRoutes[$controller];

わかりやすくするために、割り当てる変数の名前を変更したことに注意してください。$staticRoutesまた、このコントローラーをインスタンス化しようとしているコードは、プロパティが定義されているのと同じクラス(または継承クラス)にあると想定しています(したがって、を使用します$this)。

于 2012-12-03T20:09:05.967 に答える