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