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 相关文章推荐
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
php中目录,文件操作详谈
Mar 19 PHP
PHP UTF8编码内的繁简转换类
Jul 20 PHP
PHP获取MAC地址的函数代码
Sep 11 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
去除php注释和去除空格函数分享
Mar 13 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
Jul 22 PHP
浅谈PHP接收POST数据方式
Jun 05 PHP
PHP读取文件内容的五种方式
Dec 28 PHP
php简单压缩css样式示例
Sep 22 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
php学习之简单计算器实现代码
2011/06/09 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
JavaScript的类型简单说明
2010/09/03 Javascript
一起来写段JS drag拖动代码
2010/12/09 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
JavaScript中Boolean对象的属性解析
2015/10/21 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
举例讲解Python中的算数运算符的用法
2015/05/13 Python
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
Django保护敏感信息的方法示例
2019/05/09 Python
利用python画出AUC曲线的实例
2020/02/28 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
python excel和yaml文件的读取封装
2021/01/12 Python
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
行政部主管岗位职责
2013/12/28 职场文书
大学生党课思想汇报
2013/12/29 职场文书
办理退休介绍信
2014/01/09 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
武侯祠导游词
2015/02/04 职场文书
贪污检举信范文
2015/03/02 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js