没有任何方法使用界面有什么好处?在PHP中

时间:2016-08-09 10:27:58

标签: php class laravel-5 interface multiple-inheritance

当我在Laravel 5项目中查看代码时,我遇到了一个类 如下 -

class Abc extends Command implements SelfHandling, ShouldBeQueued
{

}

接口如下所示 -

interface SelfHandling {}
interface ShouldBeQueued {}

如果它没有任何方法我感到困惑,那么这些方法的用途是什么 接口?

2 个答案:

答案 0 :(得分:1)

它允许按行为处理对象。假设您有一组实现不同界面的对象,您可以将它们区分开来:

if($obj instanceof ShouldBeQueued){
    //do something
}
else if{$obj instanceof SelfHandling){
    //do something else
}

这个例子有点粗糙,但我希望它会对你有帮助。

答案 1 :(得分:0)

它们被用作一种“旗帜”。可以通过$command instanceof ShouldBeQueued进行检查。

替代方案是包含一个方法,但这需要多行冗余代码。 (无论如何,大多数实现都会返回true。)

interface ShouldBeQueued
{
    /**
     * @return bool
     */
    function shouldBeQueued();
}

class Abc extends Command implements ShouldBeQueued
{
    function shouldBeQueued()
    {
        return true;
    }
}

检查它会有点复杂:

if ($command instanceof ShouldBeQueued && $command->shouldBeQueued()) { /*...*/ }

这是一个好的做法是另一回事。