中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Laravel宏指令Macro的用法

發布時間:2021-01-25 12:24:55 來源:億速云 閱讀:415 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Laravel宏指令Macro的用法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

宏指令允許你添加自定義功能到 Laravel 的內部組件里去。

讓我們以一個簡單的 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 的上線文中,而不是在一個已經定義宏的類里。比如:

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

讓我們看一個更高級的示例。此宏有條件地基于當前 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 上應用,而不在 app.com 上應用

我們應該在哪里定義它們?

服務提供者為為您的應用程序定義宏的好地方。App\Providers\AppServiceProvider boot() I 一個很好的注入點,但是它很快就變得臃腫。

下一步是創建一個 App\Providers\MacrosServiceProvider 并注冊在 config/app.php 里。 如果某宏與之相關,我可能會創建一個 App\Providers\TldAwareServiceProvider 來容納所有與 TLD 相關的宏。

哪些組件是 Macroable?

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

門面

● Cache

● File

● Lang

● Request

● Response

● Route

● URL

Illuminate Classes

● Illuminate\Cache\Repository

● Illuminate\Console\Scheduling\Event

● Illuminate\Database\Eloquent\Builder

● Illuminate\Database\Eloquent\Relation

● Illuminate\Database\Query\Builder

● Illuminate\Filesystem\Filesystem

● Illuminate\Foundation\Testing\TestResponse

● Illuminate\Http\RedirectResponse

● Illuminate\Http\Request

● Illuminate\Http\UploadedFile

● Illuminate\Routing\ResponseFactory

● Illuminate\Routing\Router

● Illuminate\Routing\UrlGenerator

● Illuminate\Support\Arr

● Illuminate\Support\Collection

● Illuminate\Support\Str

● Illuminate\Translation\Translator

● Illuminate\Validation\Rule

感謝各位的閱讀!關于“Laravel宏指令Macro的用法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德江县| 莒南县| 家居| 宁蒗| 德安县| 鄂尔多斯市| 绍兴市| 乾安县| 永寿县| 定安县| 瓮安县| 浮山县| 繁昌县| 胶南市| 南宁市| 沙坪坝区| 阿瓦提县| 上蔡县| 昆山市| 新泰市| 新野县| 宜黄县| 桐乡市| 涪陵区| 利辛县| 垣曲县| 岳池县| 灌南县| 横山县| 麻江县| 孝感市| 买车| 宁津县| 饶阳县| 东乡族自治县| 贵南县| 宝丰县| 乐东| 哈尔滨市| 寿光市| 丹寨县|