Laravel自帶了一系列PHP幫助函數(shù),很多被框架自身使用,然而,如果你覺(jué)得方便的話也可以在應(yīng)用中隨心所欲的使用它們。
array_add
函數(shù)添加給定鍵值對(duì)到數(shù)組,如果給定鍵不存在的話:
$array = array_add(['name' => 'Desk'], 'price', 100);
// ['name' => 'Desk', 'price' => 100]
array_divide
函數(shù)返回兩個(gè)數(shù)組,一個(gè)包含原數(shù)組的所有鍵,另外一個(gè)包含原數(shù)組的所有值:
list($keys, $values) = array_divide(['name' => 'Desk']);
// $keys: ['name']
// $values: ['Desk']
array_dot
函數(shù)使用”.“號(hào)將將多維數(shù)組轉(zhuǎn)化為一維數(shù)組:
$array = array_dot(['foo' => ['bar' => 'baz']]);
// ['foo.bar' => 'baz'];
array_except
方法從數(shù)組中移除給定鍵值對(duì):
$array = ['name' => 'Desk', 'price' => 100];
$array = array_except($array, ['price']);
// ['name' => 'Desk']
array_first
方法返回通過(guò)測(cè)試數(shù)組的第一個(gè)元素:
$array = [100, 200, 300];
$value = array_first($array, function ($key, $value) {
return $value >= 150;});
// 200
默認(rèn)值可以作為第三個(gè)參數(shù)傳遞給該方法,如果沒(méi)有值通過(guò)測(cè)試的話返回默認(rèn)值:
$value = array_first($array, $callback, $default);
array_flatten
方法將多維數(shù)組轉(zhuǎn)化為一維數(shù)組:
$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];
$array = array_flatten($array);
// ['Joe', 'PHP', 'Ruby'];
array_forget
方法使用”.“號(hào)從嵌套數(shù)組中移除給定鍵值對(duì):
$array = ['products' => ['desk' => ['price' => 100]]];
array_forget($array, 'products.desk');
// ['products' => []]
array_get
方法使用”.“號(hào)從嵌套數(shù)組中獲取值:
$array = ['products' => ['desk' => ['price' => 100]]];
$value = array_get($array, 'products.desk');
// ['price' => 100]
array_get
函數(shù)還接收一個(gè)默認(rèn)值,如果指定鍵不存在的話則返回該默認(rèn)值:
$value = array_get($array, 'names.john', 'default');
array_only
方法只從給定數(shù)組中返回指定鍵值對(duì):
$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];
$array = array_only($array, ['name', 'price']);
// ['name' => 'Desk', 'price' => 100]
array_pluck
方法從數(shù)組中返回給定鍵對(duì)應(yīng)的鍵值對(duì)列表:
$array = [
['developer' => ['name' => 'Taylor']],
['developer' => ['name' => 'Abigail']]];
$array = array_pluck($array, 'developer.name');
// ['Taylor', 'Abigail'];
array_pull
方法從數(shù)組中返回并移除鍵值對(duì):
$array = ['name' => 'Desk', 'price' => 100];
$name = array_pull($array, 'name');
// $name: Desk
// $array: ['price' => 100]
array_set
方法在嵌套數(shù)組中使用”.“號(hào)設(shè)置值:
$array = ['products' => ['desk' => ['price' => 100]]];
array_set($array, 'products.desk.price', 200);
// ['products' => ['desk' => ['price' => 200]]]
array_sort
方法通過(guò)給定閉包的結(jié)果對(duì)數(shù)組進(jìn)行排序:
$array = [
['name' => 'Desk'],
['name' => 'Chair'],
];
$array = array_values(array_sort($array, function ($value) {
return $value['name'];
}));
/*
[
['name' => 'Chair'],
['name' => 'Desk'],
]
*/
array_sort_recursive
函數(shù)使用sort
函數(shù)對(duì)數(shù)組進(jìn)行遞歸排序:
$array = [
[
'Roman',
'Taylor',
'Li',
],
[
'PHP',
'Ruby',
'JavaScript',
],
];
$array = array_sort_recursive($array);
/*
[
[
'Li',
'Roman',
'Taylor',
],
[
'JavaScript',
'PHP',
'Ruby',
]
];
*/
array_where
函數(shù)使用給定閉包對(duì)數(shù)組進(jìn)行排序:
$array = [100, '200', 300, '400', 500];
$array = array_where($array, function ($key, $value) {
return is_string($value);
});
// [1 => 200, 3 => 400]
head
函數(shù)只是簡(jiǎn)單返回給定數(shù)組的第一個(gè)元素:
$array = [100, 200, 300];
$first = head($array);
// 100
last
函數(shù)返回給定數(shù)組的最后一個(gè)元素:
$array = [100, 200, 300];
$last = last($array);
// 300
app_path
函數(shù)返回app目錄的絕對(duì)路徑:
$path = app_path();
你還可以使用app_path
函數(shù)為相對(duì)于app
目錄的給定文件生成絕對(duì)路徑:
$path = app_path('Http/Controllers/Controller.php');
base_path
函數(shù)返回項(xiàng)目根目錄的絕對(duì)路徑:
$path = base_path();
你還可以使用base_path
函數(shù)為相對(duì)于應(yīng)用目錄的給定文件生成絕對(duì)路徑:
$path = base_path('vendor/bin');
config_path
函數(shù)返回應(yīng)用配置目錄的絕對(duì)路徑:
$path = config_path();
database_path
函數(shù)返回應(yīng)用數(shù)據(jù)庫(kù)目錄的絕對(duì)路徑:
$path = database_path();
public_path
函數(shù)返回public
目錄的絕對(duì)路徑:
$path = public_path();
storage_path
函數(shù)返回storage
目錄的絕對(duì)路徑:
$path = storage_path();
還可以使用storage_path
函數(shù)生成相對(duì)于storage
目錄的給定文件的絕對(duì)路徑:
$path = storage_path('app/file.txt');
camel_case
函數(shù)將給定字符串轉(zhuǎn)化為按駝峰式命名規(guī)則的字符串:
$camel = camel_case('foo_bar');
// fooBar
class_basename
返回給定類移除命名空間后的類名:
$class = class_basename('Foo\Bar\Baz');
// Baz
e
函數(shù)在給定字符串上運(yùn)行htmlentities
:
echo e('<html>foo</html>');
// <html>foo</html>
ends_with
函數(shù)判斷給定字符串是否以給定值結(jié)尾:
$value = ends_with('This is my name', 'name');
// true
snake_case
函數(shù)將給定字符串轉(zhuǎn)化為下劃線分隔的字符串:
$snake = snake_case('fooBar');
// foo_bar
str_limit
函數(shù)限制輸出字符串的數(shù)目,該方法接收一個(gè)字符串作為第一個(gè)參數(shù)以及該字符串最大輸出字符數(shù)作為第二個(gè)參數(shù):
$value = str_limit('The PHP framework for web artisans.', 7);
// The PHP...
starts_with
函數(shù)判斷給定字符串是否以給定值開(kāi)頭:
$value = starts_with('This is my name', 'This');
// true
str_contains
函數(shù)判斷給定字符串是否包含給定值:
$value = str_contains('This is my name', 'my');
// true
str_finish
函數(shù)添加字符到字符串結(jié)尾:
$string = str_finish('this/string', '/');
// this/string/
str_is
函數(shù)判斷給定字符串是否與給定模式匹配,星號(hào)可用于表示通配符:
$value = str_is('foo*', 'foobar');
// true
$value = str_is('baz*', 'foobar');
// false
str_plural
函數(shù)將字符串轉(zhuǎn)化為復(fù)數(shù)形式,該函數(shù)當(dāng)前只支持英文:
$plural = str_plural('car');
// cars
$plural = str_plural('child');
// children
str_random
函數(shù)通過(guò)指定長(zhǎng)度生成隨機(jī)字符串:
$string = str_random(40);
str_singular
函數(shù)將字符串轉(zhuǎn)化為單數(shù)形式,該函數(shù)目前只支持英文:
$singular = str_singular('cars');
// car
str_slug
函數(shù)將給定字符串生成URL友好的格式:
$title = str_slug("Laravel 5 Framework", "-");
// laravel-5-framework
studly_case
函數(shù)將給定字符串轉(zhuǎn)化為單詞開(kāi)頭字母大寫的格式:
$value = studly_case('foo_bar');
// FooBar
trans
函數(shù)使用本地文件翻譯給定語(yǔ)言行:
echo trans('validation.required'):
trans_choice函數(shù)翻譯帶拐點(diǎn)的給定語(yǔ)言行:
$value = trans_choice('foo.bar', $count);
action函數(shù)為給定控制器動(dòng)作生成URL,你不需要傳遞完整的命名空間到該控制器,傳遞相對(duì)于命名空間App\Http\Controllers的類名即可:
$url = action('HomeController@getIndex');
如果該方法接收路由參數(shù),你可以將其作為第二個(gè)參數(shù)傳遞進(jìn)來(lái):
$url = action('UserController@profile', ['id' => 1]);
使用當(dāng)前請(qǐng)求的scheme(HTTP或HTTPS)為前端資源生成一個(gè)URL:
$url = asset('img/photo.jpg');
使用HTTPS為前端資源生成一個(gè)URL:
echo secure_asset('foo/bar.zip', $title, $attributes = []);
route
函數(shù)為給定命名路由生成一個(gè)URL:
$url = route('routeName');
如果該路由接收參數(shù),你可以將其作為第二個(gè)參數(shù)傳遞進(jìn)來(lái):
$url = route('routeName', ['id' => 1]);
url
函數(shù)為給定路徑生成絕對(duì)路徑:
echo url('user/profile');
echo url('user/profile', [1]);
auth
函數(shù)返回一個(gè)認(rèn)證器實(shí)例,為方便起見(jiàn)你可以用其取代Auth
門面:
$user = auth()->user();
back
函數(shù)生成重定向響應(yīng)到用戶前一個(gè)位置:
return back();
bcrypt
函數(shù)使用Bcrypt對(duì)給定值進(jìn)行哈希,你可以用其替代Hash
門面:
$password = bcrypt('my-secret-password');
config
函數(shù)獲取配置變量的值,配置值可以通過(guò)使用”.”號(hào)訪問(wèn),包含文件名以及你想要訪問(wèn)的選項(xiàng)。如果配置選項(xiàng)不存在的話默認(rèn)值將會(huì)被指定并返回:
$value = config('app.timezone');$value = config('app.timezone', $default);
幫助函數(shù)config
還可以用于在運(yùn)行時(shí)通過(guò)傳遞鍵值對(duì)數(shù)組設(shè)置配置變量值:
config(['app.debug' => true]);
csrf_field
函數(shù)生成一個(gè)包含CSRF令牌值的HTML隱藏域,例如,使用Blade語(yǔ)法:
{!! csrf_field() !!}
csrf_token
函數(shù)獲取當(dāng)前CSRF令牌的值:
$token = csrf_token();
dd
函數(shù)輸出給定變量值并終止腳本執(zhí)行:
dd($value);
elixir
函數(shù)獲取帶版本號(hào)的Elixir文件路徑:
elixir($file);
env
函數(shù)獲取環(huán)境變量值或返回默認(rèn)值:
$env = env('APP_ENV');
// Return a default value if the variable doesn't exist...
$env = env('APP_ENV', 'production');
event
函數(shù)分發(fā)給定事件到對(duì)應(yīng)監(jiān)聽(tīng)器:
event(new UserRegistered($user));
factory
函數(shù)為給定類、名稱和數(shù)量創(chuàng)建模型工廠構(gòu)建器,可用于測(cè)試或數(shù)據(jù)填充:
$user = factory('App\User')->make();
method_field
函數(shù)生成包含HTTP請(qǐng)求方法的HTML隱藏域,例如:
<form method="POST">
{!! method_field('delete') !!}</form>
old
函數(shù)獲取一次性存放在session中的值:
$value = old('value');
redirect
函數(shù)返回重定向器實(shí)例進(jìn)行重定向:
return redirect('/home');
response
函數(shù)創(chuàng)建一個(gè)響應(yīng)實(shí)例或者獲取響應(yīng)工廠實(shí)例:
return response('Hello World', 200, $headers);return response()->json(['foo' => 'bar'], 200, $headers)
value
函數(shù)返回給定的值,然而,如果你傳遞一個(gè)閉包到該函數(shù),該閉包將會(huì)被執(zhí)行并返回執(zhí)行結(jié)果:
$value = value(function() { return 'bar'; });
view
函數(shù)獲取一個(gè)視圖實(shí)例:
return view('auth.login');
with
函數(shù)返回給定的值,該函數(shù)在方法鏈中特別有用,別的地方就沒(méi)什么用了:
$value = with(new Foo)->work();
更多建議: