千家信息网

laravel门面的作用是什么

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要为大家展示了"laravel门面的作用是什么",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"laravel门面的作用是什么"这篇文章吧。在lar
千家信息网最后更新 2025年11月13日laravel门面的作用是什么

这篇文章主要为大家展示了"laravel门面的作用是什么",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"laravel门面的作用是什么"这篇文章吧。

在laravel中,门面Facades用于为应用的IoC服务容器的类提供了一个静态的接口,Laravel的门面作为服务容器中底层类的静态代理,相比于传统静态方法,在维护时能够提供更加易于测试的语法。

本教程操作环境:windows10系统、Laravel6版,DELL G3电脑。

laravel门面有什么用

介绍

Facades 为应用的 IoC 服务容器 的类提供了一个静态的接口。Laravel 里面自带了一些 Facades,如Cache等。Laravel 的门面作为服务容器中底层类的"静态代理",相比于传统静态方法,在维护时能够提供更加易于测试、更加灵活、简明优雅的语法。

解释

在 Laravel 应用这个上下文里面,一个 Facade 就是一个类,使用这个类可以访问到来自容器里的一个对象,这个功能就是在 Facade 类里面定义的。Laravel 的 Facades 还有任何你自己定义的 Facades,都会去继承 Facade 这个类。

你的 Facade 类只需要实施一个的方法:getFacadeAccessor。要在容器里 resolve 什么出来,都是在这个方法里去做的。Facade 这个基类里面使用了__callStatic() 魔术方法,可以延迟到 resolved 对象上的,来自 Facade 的调用。

所以,当你使用 Facade 调用的时候,比如像这样:Cache:get,laravel 会从 Ioc 服务容器 里面 resolves 缓存管理类,然后再去调用这个类上面的 get 方法。Laravel 的 Facades 可以去定位服务,它是一种使用 Laravel 的 Ioc 服务容器 的更方便的语法。

优点

Facade 有诸多优点,其提供了简单、易记的语法,让我们无需记住长长的类名即可使用 Laravel 提供的功能特性,此外,由于他们对 PHP 动态方法的独到用法,使得它们很容易测试。

实际使用

下面的例子,去调用了一下 Laravel 的缓存系统。先看一下下面这行代码,你可能会觉得,这是直接去调用 Cache 这个类上面的一个叫 get 的静态的方法。

$value = Cache::get('key');

不过,如果你查看 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() 的方法。注意,这个方法的干的事就是去返回一个 Ioc 绑定的名字,这里就是 cache。

当用户在引用任何在 Cache 这个 Facade 上的静态方法的时候,Laravel 就会从 Ioc 服务容器 里面去 resolves cache 这个绑定,并且会去执行在对象上的这个所请求的方法(这里就是 get 这个方法)。

所以,我们在调用 Cache::get 的时候,它的真正的意思是这样的:

$value = $app->make('cache')->get('key');

导入 Facades

注意,在使用 facade 的时候,如果控制器里面用到了命名空间,你需要把 Facade 类导入到这个命名空间里。所有的 Facades 都是在全局命名空间下:

创建 Facades

创建 Facade 只需要三个东西:

  • 一个 IoC 绑定。

  • 一个 Facade 类。

  • 一个 Facade 别名的配置。

在下面我们定义了一个类:PaymentGateway\Payment 。

namespace PaymentGateway;class Payment {    public function process()    {        //    }}

我们需要能在 Ioc 服务容器 里面去 resolve 这个类。所以,先要去添加一个 Service Provider 绑定:

App::bind('payment', function(){    return new \PaymentGateway\Payment;});

去注册这个绑定最好的方法就是去创建一个新的 Service Provider ,把它命名为 PaymentServiceProvider ,然后把它绑定到 register 方法上。再去配置 laravel 在 config/app.php 这个配置文件里加载你的 Service Provider。

下一步就是去创建自己的 Facade 类:

use Illuminate\Support\Facades\Facade;class Payment extends Facade {    protected static function getFacadeAccessor() {             return 'payment';     }}

最后,如果你愿意,可以去给 Facade 添加一个别名,放到 config/app.php 配置文件里的 aliases 数组里。

可以去调用 Payment 类的一个实例上的 process 这个方法了。像这样:

Payment::process();

以上是"laravel门面的作用是什么"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

方法 容器 静态 服务 门面 就是 时候 语法 配置 作用 内容 对象 空间 篇文章 面的 应用 测试 优点 传统 别名 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库定义语言语句有哪些 福州龙猫互联网科技有限公司 mac导入sql文件到数据库 神器网络技术有限公司 广电网络安全自查报告范文 陕西省党政机关网络安全培训班 怎么查软件服务器地址 网络安全产品经理工作总结 鑫互联网科技有限公司官网 阿里云服务器ssh 连接不上 迅闪网络技术有限公司 网络安全资产管理办法 网络安全法下运营者的义务 网络安全顶层规划开题报告 公安局网络安全监察举报网站 c pos提交数据库 服务器换了数据库怎么还原 上海互联网养老软件开发哪儿好 安装数据库时外部组件出现异常 2o18年网络安全知识竞赛 mac导入sql文件到数据库 软件开发有什么思维 宁夏朗雅互联网科技地址 网络技术包含哪2个技术 通达信2011年前数据库 图片如何直接保存到数据库 超高清数据库 静安区数据软件开发费用是多少 幼儿园网络安全手抄报内容 多人编辑软件开发
0