所以我有以下设置,它正在工作。当然我使用不同的类名,但下面是为了更好地说明代码。
我的问题在于:
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';
}
}
//等......