3

だから私は基本的にこれをしたい:

$this->container['Menu_builder'] = $this->container->factory(function ($c) {
    return new Menu_builder($parameter_1, $parameter_2);
});

$parameter_1$parameter_2は、次のように呼び出しから渡されます。

$menu_builder = $this->container['Menu_builder']('account', 'reset_password');

上記の構文が正しくないことはわかっていますが、これらの文字列を への呼び出しに渡したいと思います$this->container->factory

これは可能ですか?

たとえば、コントローラー関数ごとに異なるパラメーターを使用して、さまざまなコントローラー関数から Menu_builder をインスタンス化する必要があるとします。

4

2 に答える 2

2

use()変数を匿名関数に渡すために使用できます。

//your parameters needs to be defined here:
$parameter_1 = "XY";
$parameter_2 = 42;

$this->container['Menu_builder'] = $this->container->factory(function ($c)use($parameter_1, $parameter_2) {
                                                                        //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ See here
    return new Menu_builder($parameter_1, $parameter_2);
});
于 2015-05-19T21:58:40.533 に答える