Laravel 门面实例教程 —— 创建自定义 Facades 类 | 底层篇 | Laravel 5.1 基础教程


本站和网页 https://xueyuanjun.com/post/817.html 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Laravel 门面实例教程 —— 创建自定义 Facades 类 | 底层篇 | Laravel 5.1 基础教程
Laravel 学院
文档
Laravel 8.x 中文文档
Laravel 7.x 中文文档
Laravel 6.x 中文文档
Laravel 5.8 中文文档
Laravel 5.7 中文文档
Laravel 5.6 中文文档
Laravel 5.5 中文文档
Laravel 5.4 中文文档
Laravel 5.3 中文文档
Laravel 5.2 中文文档
Laravel 5.1 中文文档
Lumen 中文文档
全栈教程
PHP 全栈工程师指南
PHP 入门到实战
Laravel 入门到精通
Vue.js 入门到实战
玩转 PhpStorm 教程
Laravel 博客入门项目
Laravel 微信小程序项目
Laravel 前后端分离项目
Swoole 入门到实战
Eloquent 性能优化实战
Redis 高性能实战系列
Laravel 新版本特性
PHP 新特性与最佳实践
Golang
Go 入门教程
Go Web 编程
Gin 使用教程
微服务开发
内功修炼
数据结构与算法
网络协议
微服务从入门到实践
高性能 MySQL 实战
高性能 Redis 实战
Laravel 消息队列实战
Laravel 从学徒到工匠
PHP 设计模式系列
名企面试指南
资源库
Laravel 资源大全
Laravel 开源项目
Laravel 扩展包
Laravel 资源下载
更多
博客 & 新闻
问答 & 讨论
Leetcode 题解
学院君读书笔记系列
关于 Laravel 学院
Laravel 互助学习群
Golang 互助学习群
更多
Laravel 中文文档
Laravel 全栈教程
Laravel 学习路径
Go 入门教程
程序员内功修炼
博客
问答
搜索
注册
登录
Info
Content
章节导航
Laravel 5.1 基础教程
目录索引
安装篇
3篇文章
在 Windows 中安装 Laravel 5.1.X
在 Windows 上进行 Laravel Homestead 安装、配置及测试
在 Laravel Homestead 中使用 Blackfire Profiler 对应用性能进行分析
基础篇
8篇文章
HTTP路由实例教程(一)—— 基本使用及路由参数
HTTP路由实例教程(二)—— 路由命名和路由分组
HTTP路由实例教程(三)—— CSRF攻击原理及其防护
中间件实例教程 —— 中间件的创建使用及中间件参数定义
HTTP控制器实例教程 —— 创建RESTFul风格控制器实现文章增删改查
HTTP 请求实例教程 —— 获取请求数据、Cookie及文件上传处理
HTTP响应实例教程 —— 基本使用、生成Cookie、返回视图、JSON/JSONP、文件下载及重定向
Laravel 视图实例教程 —— 在视图间共享数据及视图Composer
底层篇
4篇文章
Laravel 5.x 启动过程分析
Laravel 服务容器实例教程 —— 深入理解控制反转和依赖注入
Laravel 服务提供者实例教程 —— 创建 Service Provider 测试实例
Laravel 门面实例教程 —— 创建自定义 Facades 类
数据库篇
12篇文章
Laravel 数据库实例教程 —— 使用DB门面操作数据库
Laravel 数据库实例教程 —— 使用查询构建器对数据库进行增删改查
Laravel 数据库实例教程 —— 使用查询构建器实现对数据库的高级查询
Eloquent ORM 实例教程 —— ORM概述、模型定义及基本查询
Eloquent ORM 实例教程 —— 模型创建、更新及批量赋值
Eloquent ORM 实例教程 —— 模型删除及软删除相关实现
Eloquent ORM 实例教程 —— 查询作用域和模型事件
Eloquent ORM 实例教程 —— 关联关系及其在模型中的定义(一)
Eloquent ORM 实例教程 —— 关联关系及其在模型中的定义(二)
在 Laravel 框架之外使用数据库查询构建器及 Eloquent ORM
将 Sequel Pro 中已存在的数据表导出为 Laravel 迁移文件
将 MySQL Workbench 中已存在的数据表导出到 Laravel 迁移文件
服务篇
29篇文章
Laravel Spark 牛刀初试 —— 安装、设置及使用
Laravel 实例教程 —— 如何在Laravel 5.1中进行自定义包开发
Laravel 5.1用户认证(一) —— 使用Laravel内置组件快速实现注册登录
Laravel 5.1用户认证(二) —— 使用Laravel内置组件快速实现密码重置
Laravel 5.1用户认证(三) —— 使用Socialite实现GitHub登录认证
Laravel 5.1 中的ACL用户授权及权限检查功能实现教程
Laravel 5.1 中创建自定义 Artisan 控制台命令实例教程
Laravel 支付解决方案之 Laravel Cashier (一)—— 安装配置篇
Laravel 支付解决方案之 Laravel Cashier (二)—— 付费会员&分期付款&生成发票
Laravel 支付解决方案之如何使用支付宝进行支付
Laravel 支付解决方案之如何使用银联支付进行支付
Laravel 支付解决方案之如何使用微信支付进行支付
Laravel 缓存实例教程(一) —— 基于Memcached缓存驱动的配置
Laravel 缓存实例教程(二) —— 基于模型+缓存对文章增删改查进行优化
Laravel中运行Gulp任务的利器 —— Laravel Elixir简介及入门教程
如何在 Laravel 5.1 中使用 Laravel Elixir 集成安装 Bootstrap
Laravel Elixir 深入探究(一):Elixir配置选项、前端资源文件编译及合并
Laravel Elixir 深入探究(二):版本控制、测试套件、任务执行以及自定义任务和扩展
Laravel 5.1中 Redis 的安装配置及基本使用教程
Laravel 5.1 分页功能实现及如何自定义分页样式
Laravel 5.1 中的异常处理器和HTTP异常处理实例教程
基于 Laravel 集成的 Monolog 库对日志进行配置和记录
Laravel 5.1 定义事件、事件监听器以及触发事件实例教程
使用 Laravel 5.1 的文件系统对文件进行存储、移动和删除操作
使用 Laravel 5.1 内置的本地化功能轻松实现多语言支持
在 Laravel 5.1 中使用SMTP驱动实现邮件发送(含附件和图片)详细教程
Laravel 队列系列 —— 基于 Redis 实现任务队列的基本配置和使用
Laravel 5.1 中 Session 数据存储、访问、删除及一次性Session实例教程
Laravel 5.1 测试系列 —— PHPUnit 安装及简单单元测试示例
实战篇
2篇文章
使用 Laravel 纯手工打造一个简单的电子商务网站(一) —— 后台新增商品及前台显示
使用 Laravel 纯手工打造一个简单的电子商务网站(二) —— 用户认证及购物车功能实现
图书
Laravel 5.1 基础教程
底层篇
Laravel 门面实例教程 —— 创建自定义 Facades 类
Laravel 门面实例教程 —— 创建自定义 Facades 类
由 学院君 创建于7年前, 最后更新于 2年前
版本号 #2
40302 views
24 likes
1 collects
使用Laravel框架必不可少的会用到它很多强大的门面类(Facades),门面提供了一个“静态”接口到服务容器中绑定的类,官方文档阐述了如何使用系统自带的缓存门面,我们这里演示如何创建并使用一个自定义的门面类。
注:本教程基于上一节服务提供者做部分代码修改,不熟悉的请参阅。
我们首先创建一个需要绑定到服务容器的 Test 类:
<?php
namespace App\Facades;
class Test
public function doSomething()
echo 'This is TestClass\'s method doSomething';
然后创建一个静态指向 Test 类的门面类 TestClass:
<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class TestClass extends Facade
protected static function getFacadeAccessor()
return 'test';
接下来我们要在服务提供者中绑定 Test 类到服务容器,修改 TestServiceProvider 类如下:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Services\TestService;
use App\Facades\Test;
class TestServiceProvider extends ServiceProvider
/**
* Bootstrap the application services.
* @return void
*/
public function boot()
/**
* Register the application services.
* @return void
*/
public function register()
$this->app->singleton('test',function(){
//return new TestService();
return new Test;
});
$this->app->bind('App\Contracts\TestContract',function(){
return new TestService();
});
再然后需要到配置文件config/app.php中注册门面类别名:
'aliases' => [
...//其他门面类别名映射
'TestClass' => App\Facades\TestClass::class,
],
最后修改 TestController 代码如下:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App;
use TestClass;
use App\Contracts\TestContract;
class TestController extends Controller
public function __construct(TestContract $test){
$this->test = $test;
/**
* Display a listing of the resource.
* @return Response
*/
public function index()
// $test = App::make('test');
// $test->callMe('TestController');
//$this->test->callMe('TestController');
TestClass::doSomething();
...//其他方法
注意:不要忘了在调用门面类 TestClass 的文件顶部使用 use TestClass; 引入TestClass,否则将不能正确调用。
好了,我们可以去浏览器中测试了,访问http://laravel.app:8000/test,页面将会输出:
This is TestClass's method doSomething
Laravel
Facade
门面
自定义
教程
点赞
取消点赞
收藏
取消收藏
赞赏
分享到以下平台:
<< 上一篇:
Laravel 服务提供者实例教程 —— 创建 Service Provider 测试实例
>> 下一篇:
Laravel 数据库实例教程 —— 使用DB门面操作数据库
26 条评论
#21
nikcy
评论于 6年前
正在删除评论...
我是按照学院君 这个案例说的,因为如果不这样写 是不是下面那段代码 就有错误啊?
#22
nikcy
评论于 6年前
正在删除评论...
看到学院君第三段代码 有写TestService 但是上文并没有这个代码,所以我有这个疑问,请问我那个疑问对吗?谢谢
#23
白猪
评论于 6年前
正在删除评论...
这个例子是上一节写下来的,有多余的namespace是因为是上一节的例子。
#24
白猪
评论于 6年前
回复 #37
正在删除评论...
表面上看就是config/app.php aliases数组中指定了门面类 TestClass ,它的方法返回了 test , 这个test就是在服务提供者中向服务容器注册的
#25
Yang-Liu2015
评论于 6年前
正在删除评论...
看了半天,没怎么懂,看懂评论里说是外观模式,秒懂,我还是复习下设计模式吧
#26
SilenMark
评论于 6年前
正在删除评论...
学院君 ,您这段代码是不是注册了两个对象,一个是test静态代理Test单例,另一个是需要实现TestContract接口的对象时返回上一章服务提供者教程中的TestService实例?
&lsaquo;
&rsaquo;
登录后即可添加评论
升级为学院君订阅用户(新年优惠🎁)
相关推荐
门面(Facades)
Laravel 5.1 中文文档
核心架构
Facades 外观模式背后实现原理
博客
使用laradock配置安装laravel-echo-server不能启动?
问答
laravel的安装包太大,有没有精简版
问答
目录索引
Laravel 5.1 基础教程
回到顶部
2022 基于 Laravel 6 构建
关于学院
订阅服务
友情链接
站点地图
本站 CDN 加速服务由又拍云赞助