Laravel 5接口绑定在foreach中

时间:2016-02-29 12:10:10

标签: php laravel interface bind

所以我有以下设置,它正在工作。当然我使用不同的类名,但下面是为了更好地说明代码。

我的问题在于:

foreach($groceries as $key => $value)
{
    App::bind('App\Interfaces\CalculateInterface', "App\Classes\\{$value}");

    echo App::make('App\Interfaces\CalculateInterface')->calculate();
}

对于每个值(值是类名,如下所示)我绑定并创建一个新接口,在这个例子中,我调用一个特定的方法。我知道有更好的方法可以用于我想要实现的目标,但我想知道我在foreach中这样做的方式是否是正确的方法,当使用界面时?或者这可以用更干净,“更好”的方式来完成吗?

PS。我这样做,有一个界面,因为对于每个“产品”我需要一个不同的计算。稍后我可能会添加新类或更改现有类。所以我个人只想这样做。

路线:

Route::get('test', function () {

    $array = [
        'Test Product 1' => 'Class1',
        'Test Product 2' => 'Class2',
        'Test Product 3' => 'Class1',
    ];

    foreach($groceries as $key => $value)
    {
        App::bind('App\Interfaces\CalculateInterface', "App\Classes\\{$value}");

        echo App::make('App\Interfaces\CalculateInterface')->calculate();
    }

});

接口:

interface CalculateInterface {
    public function calculate();
}

的Class1:

class Class1 implements CalculateInterface {

    public function calculate() {
        echo 'This is the Class1 calculate method';
    }

}

等级2:

class Class2 implements CalculateInterface {

    public function calculate() {
        echo 'This is the Class2 calculate method';
    }

}

//等......

0 个答案:

没有答案