服務(wù) ―― 幫助函數(shù)

2018-02-24 15:38 更新

服務(wù) —— 幫助函數(shù)

1、簡(jiǎn)介

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

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

array_add()

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

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

array_divide()

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

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

array_dot()

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

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

array_except()

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

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

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

array_first()

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

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

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

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

array_forget()

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

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

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

array_get()

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

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

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

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

array_pluck()

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

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

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

array_pull()

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

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

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

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

array_set()

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

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

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

array_sort()

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

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

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

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

$array = [100, 200, 300];

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

last()

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

$array = [100, 200, 300];

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

3、路徑函數(shù)

app_path()

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

$path = app_path();

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

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

base_path()

base_path函數(shù)返回項(xiàng)目根目錄的絕對(duì)路徑:

$path = base_path();

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

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

config_path()

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

$path = config_path();

database_path()

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

$path = database_path();

public_path()

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

$path = public_path();

storage_path()

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

$path = storage_path();

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

$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ù)在給定字符串上運(yùn)行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ù)目,該方法接收一個(gè)字符串作為第一個(gè)參數(shù)以及該字符串最大輸出字符數(shù)作為第二個(gè)參數(shù):

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

starts_with()

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

$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ù)判斷給定字符串是否與給定模式匹配,星號(hào)可用于表示通配符:

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

str_plural()

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

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

str_random()

str_random函數(shù)通過(guò)指定長(zhǎng)度生成隨機(jī)字符串:

$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)化為單詞開(kāi)頭字母大寫的格式:

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

trans()

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

echo trans('validation.required'):

trans_choice()

trans_choice函數(shù)翻譯帶拐點(diǎn)的給定語(yǔ)言行:

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

5、URL函數(shù)

action()

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]);

asset()

使用當(dāng)前請(qǐng)求的scheme(HTTP或HTTPS)為前端資源生成一個(gè)URL:

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

secure_asset()

使用HTTPS為前端資源生成一個(gè)URL:

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

route()

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

$url = route('routeName');

如果該路由接收參數(shù),你可以將其作為第二個(gè)參數(shù)傳遞進(jìn)來(lái):

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

url()

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

echo url('user/profile');

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

6、其它函數(shù)

auth()

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

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

back()

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

return back();

bcrypt()

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

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

config()

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

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

{!! csrf_field() !!}

csrf_token()

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

$token = csrf_token();

dd()

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

dd($value);

elixir()

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

elixir($file);

env()

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

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

event(new UserRegistered($user));

factory()

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

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

method_field()

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

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

old()

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

$value = old('value');

redirect()

redirect函數(shù)返回重定向器實(shí)例進(jìn)行重定向

return redirect('/home');

response()

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

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

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

view()

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

return view('auth.login');

with()

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

$value = with(new Foo)->work();
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)