Php laravel立面立面存取器的工作
我见过这样的课程,他们使用facade并在acessor上注册一些东西Php laravel立面立面存取器的工作,php,laravel,laravel-5,laravel-5.1,laravel-facade,Php,Laravel,Laravel 5,Laravel 5.1,Laravel Facade,我见过这样的课程,他们使用facade并在acessor上注册一些东西 use Illuminate\Support\Facades\Facade; /** * @see \Collective\Html\FormBuilder */ class FormFacade extends Facade { /** * Get the registered name of the component. * * @return string */
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软件包中提取出来的,它只是返回了facade,但返回表单实际上是做什么的呢?laravel的facades是一种服务的“网关”。让代码看起来更可读是“语法糖”。所以,如果你做了如下事情:
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'));
为什么要在这里注册,因为我们必须在app.php上注册form serviceprovider,比如'form'=>Collective\Html\FormFacade::class,这种服务体系结构的一大好处是如果您想使用其他东西,您可以在一个地方交换服务的
表单
关键点,而不必到处更改代码。对于我给您带来的不便,我不理解您的歉意