为什么getFacadeAccessor()方法不是抽象的?

时间:2017-09-03 17:07:33

标签: php laravel laravel-facade

在Laravel的illuminate/support/Facades/Facade.php档案中,有以下方法:

/**
 * Get the registered name of the component.
 *
 * @return string
 *
 * @throws \RuntimeException
 */
protected static function getFacadeAccessor()
{
    throw new RuntimeException('Facade does not implement getFacadeAccessor method.');
}

是否有可能做到这一点,而不是仅仅定义一个抽象方法,如下所示?

abstract protected static function getFacadeAccessor();

为什么他们可能想重新发明轮子?

1 个答案:

答案 0 :(得分:0)

我发现以下原因here

  

此方法被设计为在扩展Facade类以返回字符串时重写,该字符串是由Facade表示的服务绑定在容器内的键。默认情况下,如果未实现,它将引发异常与那些要使用抽象方法的框架相比,这给创建自定义外观的人提供了更多的信息