laravel门面facadeaccessor工作

时间:2015-12-09 17:18:43

标签: php laravel laravel-5 laravel-5.1 laravel-facade

我见过类,他们在哪里使用外观并在访问者身上注册了一些东西。

use Illuminate\Support\Facades\Facade;

/**
 * @see \Collective\Html\FormBuilder
 */
class FormFacade extends Facade {

    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor() { return 'form'; }

}

它只是从laravel包中取出它刚刚返回的外观,但实际上返回的形式是什么?

1 个答案:

答案 0 :(得分:1)

Laravel的外墙是服务的“门户”。使代码看起来更具可读性是“语法糖”。所以,如果你做了类似的事情:

Form::open(array('route' => 'route.name'));

您实际在做的是要求应用程序解析配置了名称“form”的服务提供商作为其密钥。这是另一种可以做到的方式:

app('form')->open(array('route' => 'route.name'));

实际上,你也可以用旧式的方式来做,但DI(依赖注入)是一个很好的工具:

// Rough example without the actual parameters
$form = new Illuminate\Html\FormBuilder();
$form->open(array('route' => 'route.name'));