美文网首页
【Laravel5.2翻译】门面

【Laravel5.2翻译】门面

作者: Bill_Wang | 来源:发表于2016-08-24 18:05 被阅读36次

前阵子看了点Laravel源码,越看越乱,网上大部分中文文档都是直译,比较生涩难懂,还是决定看英文文档顺便就我的理解做下翻译整理记录下来

思维导图

简介

门面为应用服务器内可用的类提供了“静态”接口。Laravel装载了许多门面,你可能都没意识到自己正在使用它们!Laravel的门面为服务容器中的基础类提供了”静态代理”,提供了简洁形象的语法,让我们维护起来比传统静态方法更灵活可测。

使用面门

在Laravel的上下文中,facade就是一个类,它提供了容器中对象的访问入口。让它工作的核心就是Facade类。Laravel的门面和任何自定义的门面都要继承Illuminate\Support\Facades\Facade类。

facade类只需要实现一个方法:getFacadeAccessorgetFacdeAccessor方法的职责就是定义从容器中解析什么。门面的基类使用__callStatic()魔术方法来延时从facade中调用被解析的对象。
在下面的例子中,调用了Laravel缓存系统。初看之下,你可能会觉得Cache类的静态方法get被调用了

<?php

namespace App\Http\Controllers;

use Cache;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return Response
     */
    public function showProfile($id)
    {
        $user = Cache::get('user:'.$id);

        return view('profile', ['user' => $user]);
    }
}

注意我们在文件头上导入的Cache门面,这个门面作为一个代理来访问Illuminate\Contracts\Factory接口的基础实现。任何时候我们调用门面都将会传递给Laravel缓存服务的基础实现。
如果我们看下Illuminate\Support\Facades\Cache类,你将看到里面没有静态方法get:

class Cache extends Facade
{
    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor() { return 'cache'; }
}

取而代之的,Cache门面继承了Facade类然后定义了getFacadeAccessor。记住,这个方法的职责是返回服务容器绑定名。当用到Cache门面的任何静态方法,Laravel会从服务容器中解析cache绑定然后运行请求的对象方法(这里是get)。

相关文章

  • 【Laravel5.2翻译】门面

    前阵子看了点Laravel源码,越看越乱,网上大部分中文文档都是直译,比较生涩难懂,还是决定看英文文档顺便就我的理...

  • 【Laravel5.2翻译】Contacts

    前阵子看了点Laravel源码,越看越乱,网上大部分中文文档都是直译,比较生涩难懂,还是决定看英文文档顺便就我的理...

  • 【Laravel5.2翻译】服务容器

    前阵子看了点Laravel源码,越看越乱,网上大部分中文文档都是直译,比较生涩难懂,还是决定看英文文档顺便就我的理...

  • 【Laravel5.2翻译】应用结构

    前阵子看了点Laravel源码,越看越乱,网上大部分中文文档都是直译,比较生涩难懂,还是决定看英文文档顺便就我的理...

  • 【Laravel5.2翻译】单元测试

    前阵子看了点Laravel源码,越看越乱,网上大部分中文文档都是直译,比较生涩难懂,还是决定看英文文档顺便就我的理...

  • 门面模式

    门面模式,也叫外观模式,英文全称是 Facade Design Pattern。 翻译成中文就是:门面模式为子系统...

  • 【Laravel5.2翻译】 Request 生命周期

    前阵子看了点Laravel源码,越看越乱,网上大部分中文文档都是直译,比较生涩难懂,还是决定看英文文档顺便就我的理...

  • 【Laravel5.2翻译】服务提供者

    前阵子看了点Laravel源码,越看越乱,网上大部分中文文档都是直译,比较生涩难懂,还是决定看英文文档顺便就我的理...

  • laravel 5 HTML无法使用解决

    参考Laravel5.2 中的HTML和Form

  • Laravel5.2 中的HTML和Form

    laravel5.2 Forms & HTML 问题: 初学,照教程composer一个叫illuminate/h...

网友评论

      本文标题:【Laravel5.2翻译】门面

      本文链接:https://www.haomeiwen.com/subject/mbjosttx.html