Laravel包含各種全局輔助函數(shù)(helper), 你可以使用它們使開發(fā)工作流程更加輕松才写。 在這里奕筐,我將會列一下10個最好的 Laravel helpers,它們使我的開發(fā)更容易萝快。 必要時大家也考慮使用它們贡翘。
更多的輔助函數(shù),可以看 Laravel官方文檔
array_dot()
array_dot()
輔助函數(shù)允許你將多維數(shù)組轉(zhuǎn)換為使用點符號的一維數(shù)組长已。
$array = [
'user' => ['username' => 'something'],
'app' => ['creator' => ['name' => 'someone'], 'created' => 'today']
];
$dot_array = array_dot($array);
// [user.username] => something, [app.creator.name] => someone, [app.created] => today
array_get()
array_get()
函數(shù)使用點符號從多維數(shù)組中檢索值派歌。
$array = [
'user' => ['username' => 'something'],
'app' => ['creator' => ['name' => 'someone'], 'created' => 'today']
];
$name = array_get($array, 'app.creator.name');
// someone
如果key不存在,array_get()函數(shù)還接受可選的第三個參數(shù)作為默認值痰哨。
$name = array_get($array, 'app.created.name', 'anonymous');
// anonymous
public_path()
public_path()
返回 Laravel 應(yīng)用程序中公共目錄的完全限定的絕對路徑胶果。 你還可以將路徑傳遞到公共目錄中的文件或目錄以獲取該資源的絕對路徑。 它將簡單地將public_path()
添加到你的參數(shù)中斤斧。
$public_path = public_path();
$path = public_path('js/app.js');
Str::orderedUuid()
Str::orderedUuid()
函數(shù)首先生成一個時間戳uuid早抠。 這個uuid可以存儲在索引數(shù)據(jù)庫列中。 這些uuid是基于時間戳創(chuàng)建的撬讽,因此它們會保留你的內(nèi)容索引蕊连。 在Laravel 5.6中使用它時,會引發(fā) Ramsey\Uuid\Exception\UnsatisfiedDependencyException
游昼。 要解決此問題甘苍,只需運行以下命令即可使用 moontoast/math
包:
composer require "moontoast/math"
use Illuminate\Support\Str;
return (string) Str::orderByUuid()
// A timestamp first uuid
str_plural()
str_plural()
函數(shù)將字符串轉(zhuǎn)換為復(fù)數(shù)形式。該功能只支持英文烘豌。
echo str_plural('bank');
// banks
echo str_plural('developer');
// developers
route()
route()
函數(shù)為指定的路由生成路由URL载庭。
$url = route('login');
如果路由接受參數(shù),你可以簡單地將它們作為第二個參數(shù)傳遞給一個數(shù)組廊佩。
$url = route('products', ['id' => 1]);
如果你想產(chǎn)生一個相對的URL而不是一個絕對的URL囚聚,你可以傳遞false作為第三個參數(shù)。
$url = route('products', ['id' => 1], false);
tap()
tap()
函數(shù)接受兩個參數(shù):一個值和一個閉包标锄。該值將被傳遞給閉包顽铸,然后該值將被返回。閉包返回值無關(guān)緊要料皇。
$user = App\User::find(1);
return tap($user, function($user) {
$user->update([
'name' => 'Random'
]);
});
它不會返回布爾值谓松,而是返回 User Model
星压。
如果你沒有傳遞閉包,你也可以使用 User Model
的任何方法鬼譬。 無論實際返回的方法如何娜膘,返回值都將始終為值。 在下面的例子中拧簸,它將返回 User Model
而不是布爾值。 更新方法返回布爾值男窟,但由于用了 tap
盆赤,所以它將返回 User Model
。
$user = App\User::find(1);
return tap($user)->update([
'name' => 'SomeName'
]);
dump()
dump()
函數(shù)會dump給定的變量歉眷,同時也支持同時傳入多個變量牺六。這對調(diào)試非常有用。
dump($var1);
dump($var1, $var2, $var3);
str_slug()
str_slug()
函數(shù)根據(jù)給定的字符串生成一個友好的URL汗捡。你可以使用此功能為你的帖子或產(chǎn)品標題創(chuàng)建一個 slug
淑际。
$slug = str_slug('Helpers in Laravel', '-');
// helpers-in-laravel
optional()
optional()
函數(shù)接受一個參數(shù),你可以調(diào)用它的方法或訪問屬性扇住。如果傳遞的對象為null春缕,則方法和屬性將返回null而不是導(dǎo)致錯誤或拋出異常。
$user = User::find(1);
return optional($user)->name;
關(guān)于更多PHP的使用艘蹋,請前往 PHPCasts社區(qū)