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

php 微信公眾平臺(tái)開發(fā)模式實(shí)現(xiàn)多客服的實(shí)例代碼

php文件擴(kuò)展名判斷及獲取文件擴(kuò)展名的N種方法