Laravel中注冊Facades的步驟詳解
本文講述了Laravel中注冊Facades的步驟。分享給大家供大家參考,具體如下:
在Laravel中將類注冊為Fcade可以使用Ioc容器,每次使用這個類的時候只會初始化一次類,類似單例模式,而且可以像使用靜態(tài)方法調(diào)用類的方法,下面是在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
經(jīng)過前面的步驟后,可以使用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的內(nèi)容:
<?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>';
}
}
經(jīng)過注冊Facade后,調(diào)用show方法就是Test::show()的形式,并且類似單例模式不會多次實例化,調(diào)用也十分簡單。
PS:以上僅為注冊Facade的方法和步驟,實際項目中可能還需對Model層進行進一步的封裝。
轉(zhuǎn)自:小談博客 http://www.tantengvip.com/2016/01/laravel-facades-register/
更多關于Laravel相關內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《smarty模板入門基礎教程》、《php日期與時間用法總結(jié)》、《php面向?qū)ο蟪绦蛟O計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。
- 關于擴展 Laravel 默認 Session 中間件導致的 Session 寫入失效問題分析
- Laravel中間件實現(xiàn)原理詳解
- Laravel的throttle中間件失效問題解決方法
- Laravel框架實現(xiàn)利用中間件進行操作日志記錄功能
- Laravel框架基于中間件實現(xiàn)禁止未登錄用戶訪問頁面功能示例
- Laravel實現(xiàn)用戶注冊和登錄
- 示例詳解Laravel的注冊重構(gòu)
- laravel 5.1下php artisan migrate的使用注意事項總結(jié)
- Laravel 5.1 on SAE環(huán)境開發(fā)教程【附項目demo源碼】
- Laravel5.1數(shù)據(jù)庫連接、創(chuàng)建數(shù)據(jù)庫、創(chuàng)建model及創(chuàng)建控制器的方法
- Laravel5.1框架注冊中間件的三種場景詳解
相關文章
Thinkphp5+Redis實現(xiàn)商品秒殺代碼實例講解
這篇文章主要介紹了Thinkphp5+Redis實現(xiàn)商品秒殺代碼實例講解,代碼和步驟講解的很清楚,有需要的同學可以借鑒參考下2020-12-12
laravel通過創(chuàng)建自定義artisan make命令來新建類文件詳解
Laravel通過Artisan提供了強大的控制臺命令來處理非瀏覽器業(yè)務邏輯。下面這篇文章主要給大家介紹了關于laravel如何通過創(chuàng)建自定義artisan make命令來新建類文件的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-08-08
在WordPress中安裝使用視頻播放器插件Hana Flv Player
這篇文章主要介紹了在WordPress中安裝使用播放器插件Hana Flv Player的方法,包括其簡單的代碼控制,需要的朋友可以參考下2016-01-01
php 微信公眾平臺開發(fā)模式實現(xiàn)多客服的實例代碼

