久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Laravel 宏指令(Macro)

      下面由Laravel開發(fā)入門教程欄目給大家介紹神奇的 Laravel 宏指令(Macro),希望對需要的朋友有所幫助!

      Laravel 宏指令(Macro)

      可曾有過想要的一項功能在 Laravel 中,但它又不是真實存在的?讓我來給你介紹一下 Laravel 宏指令。宏指令允許你添加自定義功能到 Laravel 的內(nèi)部組件里去。

      讓我們以一個簡單的 Request 門面方法為例。

      Request::macro('introduce', function ($name) {     echo 'Hello ' . $name . '!'; }); Request::introduce('Caleb'); // outputs "Hello Caleb!"

      一個更加實用的 Request 宏指令是用于檢測當前的 TLD(頂級域:.com,.net,.org,.etc…)。

      Request::macro('tldIs', function ($tld) {     return Str::is('*.' . $tld, $this->root()); }); Request::tldIs('com') // returns true for app.com Request::tldIs('dev') // returns false for app.com

      你會注意到 Laravel 自動綁定 $this 到 Request 的上線文中,而不是在一個已經(jīng)定義宏的類里。比如:

      class AppServiceProvider {     public function boot()     {         Request::macro('context', function () {             return get_class($this);         }     } ... Request::context();  // returns 'IlluminateHttpRequest' // instead of 'AppAppServiceProvider'

      讓我們看一個更高級的示例。此宏有條件地基于當前 TLD 在模型上添加一個 where 語句。

      Builder::macro('whenTldMatches', function($tld, $callback) {     if (Request::tldIs($tld)) {         call_user_func($callback->bindTo($this));     }     return $this; }); SomeModel::whenTldMatches('org', function () {     $this->where('id', '>', 5); })->get(); // applies ->where() 在 app.org 上應(yīng)用,而不在 app.com 上應(yīng)用

      我們應(yīng)該在哪里定義它們?

      服務(wù)提供者為為您的應(yīng)用程序定義宏的好地方。AppProvidersAppServiceProvider boot() I 一個很好的注入點,但是它很快就變得臃腫。

      下一步是創(chuàng)建一個 AppProvidersMacrosServiceProvider 并注冊在 config/app.php 里。 如果某宏與之相關(guān),我可能會創(chuàng)建一個 AppProvidersTldAwareServiceProvider 來容納所有與 TLD 相關(guān)的宏。

      哪些組件是 Macroable?

      宏可以再任何具有 Macroable 特性的類上定義。下面是一個 Macroable 的門面和類的列表

      門面

      ● Cache

      ● File

      ● Lang

      ● Request

      ● Response

      ● Route

      ● URL

      Illuminate Classes

      ● IlluminateCacheRepository

      ● IlluminateConsoleSchedulingEvent

      ● IlluminateDatabaseEloquentBuilder

      ● IlluminateDatabaseEloquentRelation

      ● IlluminateDatabaseQueryBuilder

      ● IlluminateFilesystemFilesystem

      ● IlluminateFoundationTestingTestResponse

      ● IlluminateHttpRedirectResponse

      ● IlluminateHttpRequest

      ● IlluminateHttpUploadedFile

      ● IlluminateRoutingResponseFactory

      ● IlluminateRoutingRouter

      ● IlluminateRoutingUrlGenerator

      ● IlluminateSupportArr

      ● IlluminateSupportCollection

      ● IlluminateSupportStr

      ● IlluminateTranslationTranslator

      ● IlluminateValidationRule

      動手

      如果您發(fā)現(xiàn)自己在整個系統(tǒng)中對 Laravel 組件重復(fù)執(zhí)行邏輯,請考慮使用宏以實現(xiàn)更好的表達和重用。相信我,非常饞。

      祝您好運!

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號