真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Laravel宏指令Macro的用法

這篇文章給大家分享的是有關(guān)Laravel宏指令Macro的用法的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

在故城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),網(wǎng)絡(luò)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站制作,故城網(wǎng)站建設(shè)費(fèi)用合理。

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

讓我們以一個(gè)簡(jiǎn)單的 Request 門面方法為例。

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

一個(gè)更加實(shí)用的 Request 宏指令是用于檢測(cè)當(dāng)前的 TLD(頂級(jí)域:.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

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

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

讓我們看一個(gè)更高級(jí)的示例。此宏有條件地基于當(dāng)前 TLD 在模型上添加一個(gè) where 語(yǔ)句。

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)用程序定義宏的好地方。App\Providers\AppServiceProvider boot() I 一個(gè)很好的注入點(diǎn),但是它很快就變得臃腫。

下一步是創(chuàng)建一個(gè) App\Providers\MacrosServiceProvider 并注冊(cè)在 config/app.php 里。 如果某宏與之相關(guān),我可能會(huì)創(chuàng)建一個(gè) App\Providers\TldAwareServiceProvider 來(lái)容納所有與 TLD 相關(guān)的宏。

哪些組件是 Macroable?

宏可以再任何具有 Macroable 特性的類上定義。下面是一個(gè) 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

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


網(wǎng)站名稱:Laravel宏指令Macro的用法
文章網(wǎng)址:http://weahome.cn/article/jhjpdc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部