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