數組&對象php
1.array_divide()數據庫
array_divide 函數返回兩個數組,一個包含原始數組的健,另外一個包含原始數組的值
[$keys, $values] = array_divide(['name' => 'Desk']); dd($keys, $values);
結果:json
2.array_dot()api
array_dot 函數將多維數組平鋪到一維數組中,該數組使用「點」符號表示深度
$array = ['products' => ['desk' => ['price' => 100,'sum'=>10],'test'=>['price' => 1000,'sum'=>100]]]; $flattened = array_dot($array); dd($flattened);
結果:數組
3.array_except()緩存
array_except 函數從數組中刪除給定的鍵/值對
$array = ['name' => 'Desk', 'price' => 100]; $filtered = array_except($array, ['name']); dd($filtered);
結果:cookie
4.array_first()session
array_first 函數返回數組中第一個經過指定測試的元素
$array = [100, 200, 300]; $first = array_first($array, function ($value, $key) { return $value >= 150; }); dd($first);
結果:閉包
將默認值做爲第三個參數傳遞給該方法。若是沒有值經過測試,則返回該值:$first = array_first($array, $callback, $default);app
5.array_flatten()
array_flatten 函數將多維數組平鋪爲一維數組
$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby'=>'123']]; $flattened = array_flatten($array); dd($flattened)
結果:
6.array_forget()
array_forget 函數使用「點」符號從深度嵌套數組中移除給定的鍵/值對
$array = ['products' => ['desk' => ['price' => 100]]]; array_forget($array, 'products.desk'); dd($array);
結果:
7.array_get()
array_get 函數使用「點」符號從深度嵌套的數組中檢索值
$array = ['products' => ['desk' => ['price' => 100]]]; $price = array_get($array, 'products.desk.price'); dd($price);
結果:
array_get 函數也接受一個默認值,若是沒有找到指定的健,則返回該值:
$discount = array_get($array, 'products.desk.discount', 0);
8.array_only()
array_only 函數僅返回給定數組中指定的鍵/值對
$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10]; $slice = array_only($array, ['name', 'price']); dd($slice);
結果:
9.array_pluck()
array_pluck 函數從數組中檢索給定鍵的全部值
$array = [ ['developer' => ['id' => 1, 'name' => 'Taylor']], ['developer' => ['id' => 2, 'name' => 'Abigail']], ]; $names = array_pluck($array, 'developer.name'); dd($names);
結果:
你也能夠指定生成的列表的鍵
$array = [ ['developer' => ['id' => 2, 'name' => 'Taylor']], ['developer' => ['id' => 1, 'name' => 'Abigail']], ]; $names = array_pluck($array, 'developer.name','developer.id'); dd($names);
結果:
10.array_pull()
array_pull 函數返回並從數組中刪除鍵/值對
$array = ['name' => 'Desk', 'price' => 100]; $name = array_pull($array, 'name'); dd($name,$array);
結果:
將默認值做爲第三個參數傳遞給該方法。若是鍵不存在,則返回該值
$value = array_pull($array, $key, $default);
11.array_random()
array_random 函數從數組中返回一個隨機值
$array = [1, 2, 3, 4, 5]; $random = array_random($array); dd($random);
結果:
你也能夠指定要返回的隨機數的數量做爲第二個可選參數。一旦你指定了第二個參數,即便數量爲 1,這個函數也會返回一個數組
$array = [1, 2, 3, 4, 5]; $random = array_random($array,3); dd($random);
結果:
12.array_where()
array_where 函數使用給定的閉包來過濾數組
$array = [100, '200', 300, '400', 500]; $filtered = array_where($array, function ($value, $key) { return is_string($value); }); dd($filtered);
結果:
13.data_get()
data_get 函數使用「點」符號從嵌套數組或對象中檢索值
$data = ['products' => ['desk' => ['price' => 100]]]; $price = data_get($data, 'products.desk.price'); dd($price);
結果:
data_get 函數還接受默認值做爲第三個參數,若是找不到指定的鍵,將返回該值
$discount = data_get($data, 'products.desk.discount', 0);
14.head() 函數返回給定數組中的第一個元素
15.last() 函數返回給定數組中的最後一個元素
16.app_path()
app_path 返回 app 目錄的完整路徑。你還可使用 app_path 函數來生成相對於 app 目錄的文件完整路徑
$path = app_path(); dd($path);
![](http://static.javashuo.com/static/loading.gif)
$path = app_path('Http\Controllers\Controller.php'); dd($path);
17.base_path()
base_path 函數返回項目根目錄的完整路徑。你還可使用 base_path 函數生成指定文件相對於項目根目錄的完整路徑
$path = base_path(); dd($path);
$path = base_path('vendor\bin'); dd($path);
18.config_path() config_path 函數返回應用程序 config 目錄的完整路徑。你也可使用 config_path 函數來生成應用程序配置目錄中給定文件的完整路徑
19.database_path() database_path 函數返回應用程序 database 目錄的完整路徑。你也可使用 database_path 函數來生成數據庫目錄中給定文件的完整路徑
20.public_path() public_path函數返回應用程序 public目錄的完整路徑。你也可使用 public_path函數來生成public目錄中給定文件的完整路徑
21.resource_path() 函數返回應用程序 resource目錄的完整路徑。你也可使用 resource_path函數來生成resource目錄中給定文件的完整路徑
21.storage_path() 函數返回應用程序 storage目錄的完整路徑。你也可使用 storage_path函數來生成storage目錄中給定文件的完整路徑
字符串
1.preg_replace_array()
preg_replace_array 函數使用數組順序替換字符串中的給定模式
$string = 'The event will take place between :start and :end'; $replaced = preg_replace_array('/:[a-z_]+/', ['8:30', '9:00'], $string); dd($replaced);
結果:
2.str_random()
str_random 函數生成一個指定長度的隨機字符串。這個函數數用 PHP 的 random_bytes 函數
$random = str_random(30); dd($random);
3.str_replace_array()
str_replace_array 函數使用數組順序替換字符串中的給定值
$string = '該活動將於 ? 至 ? 之間舉行'; $replaced = str_replace_array('?', ['8:30', '9:00'], $string); dd($replaced);
URLs
action() action 函數爲指定的控制器動做生成一個 URL。你不須要傳遞完整的控制器命名空間。只須要傳遞相對於 App\Http\Controllers 的命名空間的控制器類名稱: $url = action('HomeController@index'); 若是該方法接受路由參數,則能夠將它們做爲方法的第二個參數傳遞: $url = action('UserController@profile', ['id' => 1]);
asset() asset 函數使用當前請求的協議( HTTP 或 HTTPS )爲資源文件生成 URL: $url = asset('img/photo.jpg');
secure_asset() secure_asset 函數使用 HTTPS 協議爲資源文件生成 URL: $url = secure_asset('img/photo.jpg');
route() route 函數爲給定的命名路由生成一個 URL: $url = route('routeName'); 若是路由接受參數,則能夠將它們做爲方法的第二個參數傳遞: $url = route('routeName', ['id' => 1]); 默認狀況下,route 函數生成的是絕對 URL。若是你想生成一個相對 URL,你能夠傳遞 false 做爲第三個參數: $url = route('routeName', ['id' => 1], false);
secure_url() secure_url 函數爲給定的路徑生成一個標準的 HTTPS URL: $url = secure_url('user/profile'); $url = secure_url('user/profile', [1]);
url() url 函數生成給定路徑的標準 URL: $url = url('user/profile'); $url = url('user/profile', [1]); 若是沒有提供路徑,則返回 Illuminate\Routing\UrlGenerator 實例: $current = url()->current(); $full = url()->full(); $previous = url()->previous();
其餘 abort() abort 函數拋出 異常處理 程序呈現的 HTTP 異常: abort(403); 你也能夠提供額外的響應文本和自定義響應標頭: abort(403, 'Unauthorized.', $headers); abort_if() 若是給定的布爾表達式計算結果爲 true, abort_if 函數將拋出一個 HTTP 異常: abort_if(! Auth::user()->isAdmin(), 403); 和 abort 方法同樣,你也能夠提供異常的響應文本做爲第三個參數,並提供一個自定義響應頭數組做爲第四個參數。 abort_unless() 若是給定的布爾表達式計算結果爲 false,abort_unless 函數將拋出一個 HTTP 異常: abort_unless(Auth::user()->isAdmin(), 403); 和 abort 方法同樣,你也能夠提供異常的響應文本做爲第三個參數,並提供一個自定義響應頭數組做爲第四個參數。 app() app 函數返回 服務容器 實例: $container = app(); 你能夠傳遞一個類或接口名稱來從容器中解析它: $api = app('HelpSpot\API'); auth() auth 函數返回一個 認證 實例。爲了方便起見,你可使用它來替代 Auth Facade: $user = auth()->user(); 若是須要,你能夠指定你想要訪問的認證明例: $user = auth('admin')->user(); back() back 函數生成一個重定向 HTTP 響應到用戶以前的位置: return back($status = 302, $headers = [], $fallback = false); return back(); bcrypt() bcrypt 哈希 使用 Bcrypt 對給定的值進行散列。你可使用它替代 Hash facade: $password = bcrypt('my-secret-password'); broadcast() broadcast 函數將廣播給定的事件到它的監聽器: broadcast(new UserRegistered($user)); blank() blank 函數判斷給定的值是否爲「空」: blank(''); blank(' '); blank(null); blank(collect()); // true blank(0); blank(true); blank(false); // false 要使用與 blank 相反的功能,請看 filled 方法。 cache() cache 函數能夠用來從緩存中獲取值。若是緩存中不存在給定的健,則返回一個可選的默認值: $value = cache('key'); $value = cache('key', 'default'); 你能夠經過將一組鍵/值對傳遞給函數來將其添加到緩存中。與此同時,你還應該傳遞有效的分鐘數或持續時間做爲緩存過時時間: cache(['key' => 'value'], 5); cache(['key' => 'value'], now()->addSeconds(10)); class_uses_recursive() class_uses_recursive 函數返回一個類使用的全部 traits,包括任何子類使用的 traits: $traits = class_uses_recursive(App\User::class); collect() collect 函數根據給定的數組建立一個集合實例: $collection = collect(['taylor', 'abigail']); config() config 函數獲取配置變量的值。可使用「點」語法訪問配置值,其中包括文件的名稱和但願訪問的選項。若是配置選項不存在,則能夠指定一個默認值並返回: $value = config('app.timezone'); $value = config('app.timezone', $default); 能夠在運行時經過傳遞一組鍵/值對來設置配置變量: config(['app.debug' => true]); cookie() cookie 函數建立一個新的 cookie 實例: $cookie = cookie('name', 'value', $minutes); csrf_field() csrf_field 函數生成包含 CSRF 令牌值的 HTMLhidden 表單字段。例如,使用 Blade 語法: {{ csrf_field() }} csrf_token() csrf_token 函數獲取當前 CSRF 令牌的值: $token = csrf_token(); dd() dd 函數輸出給定的值並結束腳本運行: dd($value); dd($value1, $value2, $value3, ...); 若是你不想終止腳本運行,請改用 dump 函數。 decrypt() decrypt 函數使用 Laravel 的加密器來解密給定的值: $decrypted = decrypt($encrypted_value); dispatch() dispatch 函數將給定的任務推送到 Laravel 任務列隊中: dispatch(new App\Jobs\SendEmails); dispatch_now() dispatch_now 函數當即運行給定的任務,並從其 handle 方法返回值: $result = dispatch_now(new App\Jobs\SendEmails); dump() dump 函數打印給定的變量: dump($value); dump($value1, $value2, $value3, ...); 若是要在打印變量後中止執行腳本,請改用 dd 函數。 encrypt() encrypt 函數使用 Laravel 的加密器對給定的值進行加密: $encrypted = encrypt($unencrypted_value); env() env 函數獲取環境變量的值或者返回默認值: $env = env('APP_ENV'); // 若是環境變量不存在則返回默認值... $env = env('APP_ENV', 'production'); {note} 若是在你在部署過程當中執行 config:cache 命令,則應該保證只在配置中調用 env 函數。一旦配置被緩存,.env 文件則不會再被加載,全部對 env 函數的調用都將返回 null。 event() event 函數將給定的事件分派給它的監聽器: event(new UserRegistered($user)); factory() factory 函數根據給定的類、名稱和數量建立一個模型工廠構建器。能夠在測試或數據填充中使用: $user = factory(App\User::class)->make(); filled() filled 函數判斷給定的值是否不爲「空」: filled(0); filled(true); filled(false); // true filled(''); filled(' '); filled(null); filled(collect()); // false 要使用與 filled 相反的功能,請看 blank 方法。 info() info 函數將信息寫入日誌: info('一些有用的信息!'); 有先後關係的數組也能夠傳遞給函數: info('用戶登陸嘗試失敗。', ['id' => $user->id]); logger() logger 函數能夠將一個 debug 級別的消息寫入到日誌中: logger('Debug 消息'); 有先後關係的數組也能夠傳遞給函數: logger('User has logged in.', ['id' => $user->id]); 若是沒有傳值給函數則返回日誌的實例: logger()->error('You are not allowed here.'); method_field() method_field 函數生成一個 HTML hidden 表單字段,其中包含表單的 HTTP 動做的欺騙值。例如,使用 Blade 語法: <form method="POST"> {{ method_field('DELETE') }} </form> now() now 函數爲當前時間建立一個新的 Illuminate\Support\Carbon 實例: $now = now(); old() old 函數 獲取 會話中閃存的 舊輸入 值: $value = old('value'); $value = old('value', 'default'); optional() optional 函數能夠接受任何參數,而且容許你訪問該對象的屬性或者調用方法。若是給定的對象是 null, 那麼屬性和方法會簡單地返回 null 而不是產生一個錯誤: return optional($user->address)->street; {!! old('name', optional($user)->name) !!} policy() policy 方法爲給定的類獲取一個策略實例: $policy = policy(App\User::class); redirect() redirect 函數返回一個重定向 HTTP 響應,若是沒有沒有傳入參數,則返回重定向實例: return redirect($to = null, $status = 302, $headers = [], $secure = null); return redirect('/home'); return redirect()->route('route.name'); report() report 函數將使用異常處理程序的 report 方法拋出異常: report($e); request() request 函數返回當前請求實例或者獲取輸入項: $request = request(); $value = request('key', $default); rescue() rescue 函數執行給定的閉包並捕獲執行期間發生的任何異常。全部被捕獲的異常將被髮送到你的異常處理程序的 report 方法。要注意的是,該請求將繼續處理: return rescue(function () { return $this->method(); }); 你也能夠將第二個參數傳遞給 rescue 方法。若是在執行閉包時發生異常,這個參數將是應該返回的默認值: return rescue(function () { return $this->method(); }, false); return rescue(function () { return $this->method(); }, function () { return $this->failure(); }); resolve() resolve 函數使用服務容器將給定的類或接口名稱解析爲其實例: $api = resolve('HelpSpot\API'); response() response 函數建立響應實例或者獲取響應工廠實例: return response('Hello World', 200, $headers); return response()->json(['foo' => 'bar'], 200, $headers); retry() retry 函數嘗試執行給定的回調,直到到達給定的最大嘗試次數。若是回調沒有拋出異常,則返回值將被返回。若是回調拋出異常,它將自動重試。若是超過最大嘗試次數,則會拋出異常: return retry(5, function () { // 在 100ms 左右嘗試 5 次... }, 100); session() session 函數能夠用來獲取或者設置 Session 值: $value = session('key'); 你能夠經過將一組鍵/值對傳遞給該函數來設置值: session(['chairs' => 7, 'instruments' => 3]); 若是沒有傳遞值給函數,則返回 Session 實例: $value = session()->get('key'); session()->put('key', $value); tap() tap 函數接受兩個參數:一個任意的 $value 和一個閉包。$value 將被傳遞給閉包,而後由 tap 函數返回。不須要在閉包中使用 return 返回值。 $user = tap(User::first(), function ($user) { $user->name = 'taylor'; $user->save(); }); 若是沒有閉包被傳遞給 tap 函數,你能夠調用給定 $value 的任何方法。而你調用的方法的返回值始終爲 $value ,不管方法在其定義中實際返回的是什麼。例如,Eloquent 的 update 方法一般會返回一個整數。可是,咱們能夠強制經過 tap 函數鏈式調用 update 方法來返回模型自己: $user = tap($user)->update([ 'name' => $name, 'email' => $email, ]); today() today 函數爲當前日期建立一個新的 Illuminate\Support\Carbon 實例: $today = today(); throw_if() 若是給定的布爾表達式計算結果爲 true,throw_if 函數拋出給定的異常: throw_if(! Auth::user()->isAdmin(), AuthorizationException::class); throw_if( ! Auth::user()->isAdmin(), AuthorizationException::class, 'You are not allowed to access this page' ); throw_unless() 若是給定的布爾表達式計算結果爲 false,則 throw_unless 函數會拋出給定的異常: throw_unless(Auth::user()->isAdmin(), AuthorizationException::class); throw_unless( Auth::user()->isAdmin(), AuthorizationException::class, 'You are not allowed to access this page' ); trait_uses_recursive() trait_uses_recursive 函數返回一個類使用的全部 trait: $traits = trait_uses_recursive(\Illuminate\Notifications\Notifiable::class); transform() 若是給定的值不爲 blank 而且返回 Closure,那麼 transform 函數對給定的值執行 Closure 並返回其結果: $callback = function ($value) { return $value * 2; }; $result = transform(5, $callback); // 10 默認值或 Closure 也能夠做爲方法的第三個參數傳遞。若是給定值爲空白,則返回該值: $result = transform(null, $callback, 'The value is blank'); // The value is blank validator() validator 函數用給定的參數建立一個新的驗證器實例。爲方便起見,你可使用它來代替 Validator facade : $validator = validator($data, $rules, $messages); value() value 函數返回給定的值。可是,若是將一個 Closure 傳遞給該函數,則將執行該 Closure 並返回其結果: $result = value(true); // true $result = value(function () { return false; }); // false view() view 函數獲取一個視圖實例: return view('auth.login');
with() with 函數會返回給定的值。若是傳入一個 Closure 做爲該函數的第二個參數,會返回 Closure 執行的結果: $callback = function ($value) { return (is_numeric($value)) ? $value * 2 : 0; }; $result = with(5, $callback); // 10 $result = with(null, $callback); // 0 $result = with(5, null); // 5