鍍金池/ 教程/ PHP/ 幫助函數(shù)
門面
Laravel Homestead
安裝及配置
測試
HTTP 中間件
加密
升級指南
幫助函數(shù)
應(yīng)用目錄結(jié)構(gòu)
集合
新手入門指南-簡單任務(wù)管理系統(tǒng)
任務(wù)調(diào)度
查詢構(gòu)建器
視圖
驗證
Laravel Cashier(訂購&支付&發(fā)票)
本地化
隊列
調(diào)整器
分頁
文件系統(tǒng)/云存儲
貢獻代碼
哈希
HTTP 控制器
緩存
遷移
HTTP 請求
Laravel Elixir
發(fā)行版本說明
Envoy 任務(wù)運行器(SSH任務(wù))
序列化
Session
起步
帶用戶功能的任務(wù)管理系統(tǒng)
起步
用戶授權(quán)
郵件
事件
填充數(shù)據(jù)
HTTP 路由
服務(wù)提供者
Blade 模板引擎
包開發(fā)
用戶認證
Artisan 控制臺
HTTP 響應(yīng)
集合
服務(wù)容器
關(guān)聯(lián)關(guān)系
一次請求的生命周期
契約
Redis
錯誤&日志

幫助函數(shù)

1、簡介

Laravel 自帶了一系列 PHP幫助函數(shù),很多被框架自身使用,然而,如果你覺得方便的話也可以在應(yīng)用中隨心所欲的使用它們。

2、 數(shù)組函數(shù)

array_add()

array_add 函數(shù)添加給定鍵值對到數(shù)組,如果給定鍵不存在的話:

$array = array_add(['name' => 'Desk'], 'price', 100);
// ['name' => 'Desk', 'price' => 100]

array_divide()

array_divide 函數(shù)返回兩個數(shù)組,一個包含原數(shù)組的所有鍵,另外一個包含原數(shù)組的所有值:

list($keys, $values) = array_divide(['name' => 'Desk']);
// $keys: ['name']
// $values: ['Desk']

array_dot()

array_dot 函數(shù)使用”.“號將將多維數(shù)組轉(zhuǎn)化為一維數(shù)組:

$array = array_dot(['foo' => ['bar' => 'baz']]);
// ['foo.bar' => 'baz'];

array_except()

array_except 方法從數(shù)組中移除給定鍵值對:

$array = ['name' => 'Desk', 'price' => 100];

$array = array_except($array, ['price']);
// ['name' => 'Desk']

array_first()

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()

array_flatten 方法將多維數(shù)組轉(zhuǎn)化為一維數(shù)組:

$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];

$array = array_flatten($array);
// ['Joe', 'PHP', 'Ruby'];

array_forget()

array_forget 方法使用”.“號從嵌套數(shù)組中移除給定鍵值對:

$array = ['products' => ['desk' => ['price' => 100]]];

array_forget($array, 'products.desk');
// ['products' => []]

array_get()

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()

array_only 方法只從給定數(shù)組中返回指定鍵值對:

$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];

$array = array_only($array, ['name', 'price']);
// ['name' => 'Desk', 'price' => 100]

array_pluck()

array_pluck 方法從數(shù)組中返回給定鍵對應(yīng)的鍵值對列表:

$array = [
    ['developer' => ['name' => 'Taylor']],
    ['developer' => ['name' => 'Abigail']]];

$array = array_pluck($array, 'developer.name');
// ['Taylor', 'Abigail'];

array_pull()

array_pull 方法從數(shù)組中返回并移除鍵值對:

$array = ['name' => 'Desk', 'price' => 100];

$name = array_pull($array, 'name');
// $name: Desk

// $array: ['price' => 100]

array_set()

array_set 方法在嵌套數(shù)組中使用”.“號設(shè)置值:

$array = ['products' => ['desk' => ['price' => 100]]];

array_set($array, 'products.desk.price', 200);
// ['products' => ['desk' => ['price' => 200]]]

array_sort()

array_sort 方法通過給定閉包的結(jié)果對數(shù)組進行排序:

$array = [
    ['name' => 'Desk'],
    ['name' => 'Chair'],
];

$array = array_values(array_sort($array, function ($value) {
    return $value['name'];
}));

/*
    [
        ['name' => 'Chair'],
        ['name' => 'Desk'],
    ]
*/

array_sort_recursive()

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()

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()

head 函數(shù)只是簡單返回給定數(shù)組的第一個元素:

$array = [100, 200, 300];

$first = head($array);
// 100

last()

last 函數(shù)返回給定數(shù)組的最后一個元素:

$array = [100, 200, 300];

$last = last($array);
// 300

3、路徑函數(shù)

app_path()

app_path 函數(shù)返回 app 目錄的絕對路徑:

$path = app_path();

你還可以使用 app_path函數(shù)為相對于 app目錄的給定文件生成絕對路徑:

$path = app_path('Http/Controllers/Controller.php');

base_path()

base_path 函數(shù)返回項目根目錄的絕對路徑:

$path = base_path();

你還可以使用 base_path函數(shù)為相對于應(yīng)用目錄的給定文件生成絕對路徑:

$path = base_path('vendor/bin');

config_path()

config_path 函數(shù)返回應(yīng)用配置目錄的絕對路徑:

$path = config_path();

database_path()

database_path 函數(shù)返回應(yīng)用數(shù)據(jù)庫目錄的絕對路徑:

$path = database_path();

public_path()

public_path函數(shù)返回 public目錄的絕對路徑:

$path = public_path();

storage_path()

storage_path 函數(shù)返回 storage 目錄的絕對路徑:

$path = storage_path();

還可以使用 storage_path 函數(shù)生成相對于 storage 目錄的給定文件的絕對路徑:

$path = storage_path('app/file.txt');

4、字符串函數(shù)

camel_case()

camel_case 函數(shù)將給定字符串轉(zhuǎn)化為按駝峰式命名規(guī)則的字符串:

$camel = camel_case('foo_bar');
// fooBar

class_basename()

class_basename 返回給定類移除命名空間后的類名:

$class = class_basename('Foo\Bar\Baz');
// Baz

e()

e 函數(shù)在給定字符串上運行 htmlentities

echo e('<html>foo</html>');
// &lt;html&gt;foo&lt;/html&gt;

ends_with()

ends_with 函數(shù)判斷給定字符串是否以給定值結(jié)尾:

$value = ends_with('This is my name', 'name');
// true

snake_case()

snake_case 函數(shù)將給定字符串轉(zhuǎn)化為下劃線分隔的字符串:

$snake = snake_case('fooBar');
// foo_bar

str_limit()

str_limit 函數(shù)限制輸出字符串的數(shù)目,該方法接收一個字符串作為第一個參數(shù)以及該字符串最大輸出字符數(shù)作為第二個參數(shù):

$value = str_limit('The PHP framework for web artisans.', 7);
// The PHP...

starts_with()

starts_with 函數(shù)判斷給定字符串是否以給定值開頭:

$value = starts_with('This is my name', 'This');
// true

str_contains()

str_contains 函數(shù)判斷給定字符串是否包含給定值:

$value = str_contains('This is my name', 'my');
// true

str_finish()

str_finish 函數(shù)添加字符到字符串結(jié)尾:

$string = str_finish('this/string', '/');
// this/string/

str_is()

str_is 函數(shù)判斷給定字符串是否與給定模式匹配,星號可用于表示通配符:

$value = str_is('foo*', 'foobar');
// true
$value = str_is('baz*', 'foobar');
// false

str_plural()

str_plural 函數(shù)將字符串轉(zhuǎn)化為復數(shù)形式,該函數(shù)當前只支持英文:

$plural = str_plural('car');
// cars
$plural = str_plural('child');
// children

str_random()

str_random 函數(shù)通過指定長度生成隨機字符串:

$string = str_random(40);

str_singular()

str_singular 函數(shù)將字符串轉(zhuǎn)化為單數(shù)形式,該函數(shù)目前只支持英文:

$singular = str_singular('cars');
// car

str_slug()

str_slug 函數(shù)將給定字符串生成URL友好的格式:

$title = str_slug("Laravel 5 Framework", "-");
// laravel-5-framework

studly_case()

studly_case 函數(shù)將給定字符串轉(zhuǎn)化為單詞開頭字母大寫的格式:

$value = studly_case('foo_bar');
// FooBar

trans()

trans 函數(shù)使用本地文件翻譯給定語言行:

echo trans('validation.required'):

trans_choice()

trans_choice 函數(shù)翻譯帶拐點的給定語言行:

$value = trans_choice('foo.bar', $count);

5、URL 函數(shù)

action()

action 函數(shù)為給定控制器動作生成 URL,你不需要傳遞完整的命名空間到該控制器,傳遞相對于命名空間 App\Http\Controllers 的類名即可:

$url = action('HomeController@getIndex');

如果該方法接收路由參數(shù),你可以將其作為第二個參數(shù)傳遞進來:

$url = action('UserController@profile', ['id' => 1]);

asset()

使用當前請求的 scheme(HTTP 或 HTTPS)為前端資源生成一個 URL:

$url = asset('img/photo.jpg');

secure_asset()

使用 HTTPS為前端資源生成一個 URL:

echo secure_asset('foo/bar.zip', $title, $attributes = []);

route()

route 函數(shù)為給定命名路由生成一個 URL

$url = route('routeName');

如果該路由接收參數(shù),你可以將其作為第二個參數(shù)傳遞進來:

$url = route('routeName', ['id' => 1]);

url()

url 函數(shù)為給定路徑生成絕對路徑:

echo url('user/profile');

echo url('user/profile', [1]);

6、其它函數(shù)

auth()

auth 函數(shù)返回一個認證器實例,為方便起見你可以用其取代 Auth 門面:

$user = auth()->user();

back()

back 函數(shù)生成重定向響應(yīng)到用戶前一個位置:

return back();

bcrypt()

bcrypt 函數(shù)使用 Bcrypt對給定值進行哈希,你可以用其替代 Hash門面:

$password = bcrypt('my-secret-password');

config()

config 函數(shù)獲取配置變量的值,配置值可以通過使用”.”號訪問,包含文件名以及你想要訪問的選項。如果配置選項不存在的話默認值將會被指定并返回:

$value = config('app.timezone');$value = config('app.timezone', $default);

幫助函數(shù) config還可以用于在運行時通過傳遞鍵值對數(shù)組設(shè)置配置變量值:

config(['app.debug' => true]);

csrf_field()

csrf_field 函數(shù)生成一個包含 CSRF 令牌值的 HTML 隱藏域,例如,使用Blade 語法:

{!! csrf_field() !!}

csrf_token()

csrf_token 函數(shù)獲取當前 CSRF 令牌的值:

$token = csrf_token();

dd()

dd 函數(shù)輸出給定變量值并終止腳本執(zhí)行:

dd($value);

elixir()

elixir 函數(shù)獲取帶版本號的Elixir文件路徑:

elixir($file);

env()

env 函數(shù)獲取環(huán)境變量值或返回默認值:

$env = env('APP_ENV');
// Return a default value if the variable doesn't exist...
$env = env('APP_ENV', 'production');

event()

event 函數(shù)分發(fā)給定事件到對應(yīng)監(jiān)聽器:

event(new UserRegistered($user));

factory()

factory 函數(shù)為給定類、名稱和數(shù)量創(chuàng)建模型工廠構(gòu)建器,可用于測試或數(shù)據(jù)填充:

$user = factory('App\User')->make();

method_field()

method_field 函數(shù)生成包含 HTTP 請求方法的 HTML 隱藏域,例如:

<form method="POST">
    {!! method_field('delete') !!}</form>

old()

old 函數(shù)獲取一次性存放在 session 中的值:

$value = old('value');

redirect()

redirect 函數(shù)返回重定向器實例進行重定向:

return redirect('/home');

response()

response 函數(shù)創(chuàng)建一個響應(yīng)實例或者獲取響應(yīng)工廠實例:

return response('Hello World', 200, $headers);return response()->json(['foo' => 'bar'], 200, $headers)

value()

value 函數(shù)返回給定的值,然而,如果你傳遞一個閉包到該函數(shù),該閉包將會被執(zhí)行并返回執(zhí)行結(jié)果:

$value = value(function() { return 'bar'; });

view()

view 函數(shù)獲取一個視圖實例:

return view('auth.login');

with()

with 函數(shù)返回給定的值,該函數(shù)在方法鏈中特別有用,別的地方就沒什么用了:

$value = with(new Foo)->work();
上一篇:查詢構(gòu)建器下一篇:用戶認證