Laravel助手接口

3

一个简单的例子,我有以下计算辅助接口:

interface Calculation
{
    public function calculate();
}

以下是几个实现了这个接口的类:

class One implements Calculation
{
    public function calculate()
    {
        return some calculation;
    }
}


class Two implements Calculation
{
    public function calculate()
    {
        return some different calculation;
    }
}

// and so on..

现在,我展示了下面的代码,但我想要能够摆脱这里的if语句。我希望能够做到像这样:

foreach($units as $unit)
{
        $total = (new \App\Helpers\{$unit})->calculate();
}

我该如何处理这个问题?

foreach($units as $unit)
{
    if($unit === 'One')
    {
        $total = (new \App\Helpers\One)->calculate();
    }

    if($unit === 'Two')
    {
        $total = (new \App\Helpers\Two)->calculate();
    }

    if($unit === 'Three')
    {
        $total = (new \App\Helpers\Three)->calculate();
    }

    if($unit === 'Four')
    {
        $total = (new \App\Helpers\Four)->calculate();
    }

    // and so on..
}
1个回答

4

试试这段代码:

   foreach($units as $unit)
    {
     $class="\\App\\Helpers\\".$unit;
     $total=(new $class)->calculate();
    }

1
是的,就是这样,虽然我认为我目前使用的接口对我来说完全没有用处,但我仍在学习它们,所以感谢您的回答 :) - Hardist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接