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

在故城等地區(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 來容納所有與 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í),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
分享文章:Laravel宏指令Macro的用法
分享URL:http://chinadenli.net/article12/jhjpdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、關(guān)鍵詞優(yōu)化、移動(dòng)網(wǎng)站建設(shè)、定制網(wǎng)站、用戶體驗(yàn)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)