中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

創(chuàng)新互聯(lián)教你如何擴展Laravel常用方法

2023-12-03    分類: 網(wǎng)站建設

注冊服務

向容器中注冊服務

// 綁定服務
$container->bind('log', function(){
   return new Log();
});
// 綁定單例服務
$container->singleton('log', function(){
   return new Log();
});

擴展綁定

擴展已有服務

$container->extend('log', function(Log $log){
   return new RedisLog($log);
});

Manager

Manager實際上是一個工廠,它為服務提供了驅(qū)動管理功能。

Laravel中的很多組件都使用了Manager,如:AuthCacheLogNotificationQueueRedis等等,每個組件都有一個xxxManager的管理器。我們可以通過這個管理器擴展服務。

比如,如果我們想讓Cache服務支持RedisCache驅(qū)動,那么我們可以給Cache服務擴展一個redis驅(qū)動:

Cache::extend('redis', function(){
   return new RedisCache();
});

這時候,Cache服務就支持redis這個驅(qū)動了。現(xiàn)在,找到config/cache.php,把default選項的值改成redis。這時候我們再用Cache服務時,就會使用RedisCache驅(qū)動來使用緩存。

Macro和Mixin

有些情況下,我們需要給一個類動態(tài)增加幾個方法,Macro或者Mixin很好的解決了這個問題。

在Laravel底層,有一個名為MacroableTrait,凡是引入了Macroable的類,都支持MacroMixin的方式擴展,比如RequestResponseSessionGuardViewTranslator等等。

Macroable提供了兩個方法,macromixinmacro方法可以給類增加一個方法,mixin是把一個類中的方法混合到Macroable類中。

舉個例子,比如我們要給Request類增加兩個方法。

使用macro方法時:

Request::macro('getContentType', function(){
   // 函數(shù)內(nèi)的$this會指向Request對象
   return $this->headers->get('content-type');
});
Request::macro('hasField', function(){
    return !is_null($this->get($name));
});

$contentType = Request::getContentstType();
$haspassword = Request::hasField('password');

使用mixin方法時:

class MixinRequest{

   public function getContentType(){
       // 方法內(nèi)必須返回一個函數(shù)
       return function(){
           return $this->headers->get('content-type');
       };
   }

   public function hasField(){
       return function($name){
            return !is_null($this->get($name));
       };
   }
}

Request::mixin(new MixinRequest());

$contentType = Request::getContentType();
$haspassword = Request::hasField('password');

網(wǎng)頁標題:創(chuàng)新互聯(lián)教你如何擴展Laravel常用方法
URL分享:http://m.2m8n56k.cn/news19/298419.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器企業(yè)網(wǎng)站制作移動網(wǎng)站建設品牌網(wǎng)站制作品牌網(wǎng)站設計軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設
主站蜘蛛池模板: 欧美一级欧美一级高清 | 欧美国产日韩在线播放 | 色综合天天综合网看在线影院 | 欧美整片在线观看 | 欧美日韩一区二区三区免费不卡 | 国产精品久久久久一区二区 | 自偷自偷自亚洲永久 | 在线观看免费亚洲 | 毛片在线高清免费观看 | 精品在线播放视频 | 97视频免费在线观看 | 国产成人精品一区二区不卡 | 欧美一级特黄乱妇高清视频 | 成人自拍在线 | 国产资源免费 | 国产精品女上位在线观看 | 欧美一级毛片无遮挡 | 国产成人精品视频免费 | 男人和女人搞黄 | 18黄网站| 日本三级香港三级人妇r | 色综合久久88一加勒比 | a毛片视频免费观看影院 | 免费五级在线观看日本片 | 久久久久一| 99精品欧美一区二区三区美图 | 国产精品夜色视频一级区 | 日韩欧美一中字暮 | 免费看一级欧美毛片视频 | 国产视频在线免费观看 | 97影院理论片 | 99视频精品| 日韩激情无码免费毛片 | 精品动漫一区二区 | 免费人成在线 | 日韩一级a毛片欧美区 | 色天使影院 | 美女张开腿给人网站 | 波多野结衣一区在线观看 | 亚洲精品国产成人 | 久久视频免费 |