Laravel中注册Facades的步骤详解


Posted in PHP onMarch 16, 2016

本文讲述了Laravel中注册Facades的步骤。分享给大家供大家参考,具体如下:

在Laravel中将类注册为Fcade可以使用Ioc容器,每次使用这个类的时候只会初始化一次类,类似单例模式,而且可以像使用静态方法调用类的方法,下面是在Laravel中注册Facades的步骤。

1.在项目app目录的Providers/AppServiceProvider.php中的register方法新增方法,代码如下。

/**
 * Register any application services.
 *
 * @return void
 */
public function register()
{
 $this->registerTestModel();
}
private function registerTestModel()
{
 $this->app->singleton('testmodel', function ($app) {
  $model = 'App\Models\Test';
  return new $model();
 });
 $this->app->alias('testmodel', 'App\Models\Test');
}

这里把命名空间是App\Models的Test类注册为单例模式,并且取个别名testmodel.这个Test类的文件位置app/Models/Test.php.

2.建立一个Facade类

在项目根目录app\Facades目录新增文件,如Test.php,代码如下,目录不存在可以新建一个。

<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class Test extends Facade
{
 /**
  * Get the registered name of the component.
  *
  * @return string
  */
 protected static function getFacadeAccessor()
 {
  return 'testmodel';
 }
}

通过继承Facade,重载getFacadeAccessor方法,返回之前绑定的单例模式的类的别名。

3.使用Facade

经过前面的步骤后,可以使用Test这个Facade了,如下示例是在控制器中使用Facade的方式。

<?php
namespace App\Http\Controllers;
use App\Facades\Test;
use Illuminate\Routing\Controller;
class TestController extends Controller
{
 public function __construct()
 {
  Test::show();
  Test::show();
 }
}

先看看这个原始类Test.php的内容:

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Test extends Model
{
 protected $table = 'tt';
 public static $times = 0;
 public function __construct()
 {
  self::$times++;
  parent::__construct();
 }
 public function show()
 {
  echo self::$times . '<br>';
 }
}

经过注册Facade后,调用show方法就是Test::show()的形式,并且类似单例模式不会多次实例化,调用也十分简单。

PS:以上仅为注册Facade的方法和步骤,实际项目中可能还需对Model层进行进一步的封装。

转自:小谈博客 http://www.tantengvip.com/2016/01/laravel-facades-register/

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP来写记数器(详细介绍)
Oct 09 PHP
Discuz! Passport 通行证整合
Mar 27 PHP
PHP+MYSQL 出现乱码的解决方法
Aug 08 PHP
php下清空字符串中的HTML标签的代码
Sep 06 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
ThinkPHP上使用多说评论插件的方法
Oct 31 PHP
php强制运行广告的方法
Dec 01 PHP
php实现的SESSION类
Dec 02 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
PHP实现根据时间戳获取周几的方法
Feb 26 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 #PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 #PHP
PHP 二维数组和三维数组的过滤
Mar 16 #PHP
详解php中反射的应用
Mar 15 #PHP
php实现图片上传并进行替换操作
Mar 15 #PHP
php模板引擎技术简单实现
Mar 15 #PHP
9个比较实用的php代码片段
Mar 15 #PHP
You might like
关于文本留言本的分页代码
2006/10/09 PHP
PHP nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
2009/08/21 PHP
PHP中删除变量时unset()和null的区别分析
2011/01/27 PHP
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
ExtJS自定义主题(theme)样式详解
2013/11/18 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
vue 循环加载数据并获取第一条记录的方法
2018/09/26 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
如何用python写一个简单的词法分析器
2018/12/18 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
html5移动端价格输入键盘的实现
2019/09/16 HTML / CSS
探矿工程师自荐信
2014/01/24 职场文书
供电工程专业求职信
2014/08/09 职场文书
励志演讲稿300字
2014/08/21 职场文书
自查自纠工作总结
2014/10/15 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
大学毕业生个人总结
2015/02/28 职场文书
学校标语口号大全
2015/12/26 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python