Helpers trong Laravel 5.3
Bài đăng này đã không được cập nhật trong 6 năm
Xin chào các bạn. Hôm nay mình sẽ tiếp tục về series về Laravel. Và hôm nay mình sẽ giới thiệu với các bạn về Helpers trong laravel và cách sử dụng .
Helpers
Giới thiệu
Laravel có chứa danh sách các hàm PHP "trợ giúp". Trong số này, nhiều hàm được sử dụng bên trong framework; tuy nhiên, bạn có thể tuỳ ý sử dụng chúng trong ứng dụng nếu bạn cảm thấy tiện.
Giới thiệu các hàm
Arrays
array_add()
Hàm array_add
thêm một cặp key / value vào trong mảng nếu key đó chưa tồn tại trong array:
$array = array_add(['name' => 'Desk'], 'price', 100);
// ['name' => 'Desk', 'price' => 100]
array_collapse()
Hàm array_collapse
làm thu nhỏ lại mảng của các mảng thành một mảng đơn:
$array = array_collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
array_divide()
Hàm array_divide
trả về hai mảng, một mảng chứa các key, mảng còn lại chứa các values của mảng gốc:
list($keys, $values) = array_divide(['name' => 'Desk']);
// $keys: ['name']
// $values: ['Desk']
array_dot()
Hàm array_dot
làm flat các mảng đa chiều thành mảng một chiều sử dụng kí hiệu "dot" để đánh đấu độ sâu:
$array = array_dot(['foo' => ['bar' => 'baz']]);
// ['foo.bar' => 'baz'];
array_except()
Hàm array_except
loại bỏ các cặp key / value khỏi mảng:
$array = ['name' => 'Desk', 'price' => 100];
$array = array_except($array, ['price']);
// ['name' => 'Desk']
array_first()
Hàm array_first
trả về phần tử đầu tiên của mảng theo một điều kiện:
$array = [100, 200, 300];
$value = array_first($array, function ($key, $value) {
return $value >= 150;
});
// 200
Giá trị mặc định cũng có thể được truyền vào ở tham số thứ ba. Giá trị này sẽ được trả lại nếu không có giá trị nào thoả mãn điều kiện:
$value = array_first($array, $callback, $default);
array_flatten()
Hàm array_flatten
sẽ làm flat mảng đa chiều thành mảng một chiều.
$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];
$array = array_flatten($array);
// ['Joe', 'PHP', 'Ruby'];
array_forget()
Hàm array_forget
xoá một cặp key / value từ một mảng con nằm sâu bên trong sử dụng kí hiệu "dot":
$array = ['products' => ['desk' => ['price' => 100]]];
array_forget($array, 'products.desk');
// ['products' => []]
array_get()
Hàm array_get
lấy giá trị từ mảng con sâu bên trong sử dụng kí hiệu "dot":
$array = ['products' => ['desk' => ['price' => 100]]];
$value = array_get($array, 'products.desk');
// ['price' => 100]
Hàm array_get
cũng nhận một giá trị mặc định, và trả lại nếu như một khoá không tìm thấy:
$value = array_get($array, 'names.john', 'default');
array_has()
Hàm array_has
kiểm tra xem một item có tồn tại trong mảng hay không sử dụng kí hiệu "dot":
$array = ['products' => ['desk' => ['price' => 100]]];
$hasDesk = array_has($array, 'products.desk');
// true
array_only()
Hàm array_only
sẽ trả lại giá trị của các cặp key / value từ một mảng cho trước:
$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];
$array = array_only($array, ['name', 'price']);
// ['name' => 'Desk', 'price' => 100]
array_pluck()
Hàm array_pluck
sẽ trả lại danh sách giá trị với key cho trước:
$array = [
['developer' => ['id' => 1, 'name' => 'Taylor']],
['developer' => ['id' => 2, 'name' => 'Abigail']],
];
$array = array_pluck($array, 'developer.name');
// ['Taylor', 'Abigail'];
Bạn cũng có thể chỉ định đâu là khoá trong danh sách kết quả:
$array = array_pluck($array, 'developer.name', 'developer.id');
// [1 => 'Taylor', 2 => 'Abigail'];
array_prepend()
Hàm array_prepend
sẽ thêm một item vào đầu mảng:
$array = ['one', 'two', 'three', 'four'];
$array = array_prepend($array, 'zero');
// $array: ['zero', 'one', 'two', 'three', 'four']
array_pull()
Hàm array_pull
trả lại và xoá một cặp key / value khỏi mảng:
$array = ['name' => 'Desk', 'price' => 100];
$name = array_pull($array, 'name');
// $name: Desk
// $array: ['price' => 100]
array_set()
Hàm array_set
thiết lập giá trị sâu trong mảng con sử dụng kí hiệu "dot":
$array = ['products' => ['desk' => ['price' => 100]]];
array_set($array, 'products.desk.price', 200);
// ['products' => ['desk' => ['price' => 200]]]
array_sort()
Hàm array_sort
thực hiện sắp xếp mảng theo kết quả của một Closure truyền vào:
$array = [
['name' => 'Desk'],
['name' => 'Chair'],
];
$array = array_values(array_sort($array, function ($value) {
return $value['name'];
}));
/*
[
['name' => 'Chair'],
['name' => 'Desk'],
]
*/
array_sort_recursive()
Hàm array_sort_recursive
thực hiện sắp xếp mảng sử dụng hàm sort
một cách đệ quy:
$array = [
[
'Roman',
'Taylor',
'Li',
],
[
'PHP',
'Ruby',
'JavaScript',
],
];
$array = array_sort_recursive($array);
/*
[
[
'Li',
'Roman',
'Taylor',
],
[
'JavaScript',
'PHP',
'Ruby',
]
];
*/
array_where()
Hàm array_where
lọc mảng theo một Closure cho trước:
$array = [100, '200', 300, '400', 500];
$array = array_where($array, function ($key, $value) {
return is_string($value);
});
// [1 => 200, 3 => 400]
head()
Hàm head
đơn giản chỉ trả về phần tử đầu tiên của mảng:
$array = [100, 200, 300];
$first = head($array);
// 100
last()
Hàm last
trả về phần tử cuối cùng của mảng:
$array = [100, 200, 300];
$last = last($array);
// 300
Paths
app_path()
Hàm app_path
trả về đường dẫn đầy đủ tới thư mục app
:
$path = app_path();
Bạn cũng có thể sử dụng hàm app_path
để tạo ra đường dẫn đầy đủ tới một file relative với thư mục của ứng dụng:
$path = app_path('Http/Controllers/Controller.php');
base_path()
Hàm base_path
trả về đường dẫn đầy đủ của project root:
$path = base_path();
Bạn cũng có thể sử dụng hàm base_path
để tạo đường dẫn đầy đủ tới một file relative tới thư mục ứng dụng:
$path = base_path('vendor/bin');
config_path()
Hàm config_path
trả về đường dẫn đầy đủ tới thư mục cấu hình:
$path = config_path();
database_path()
Hàm database_path
trả về đường dẫn đầy đủ tới thư mục database của ứng dụng:
$path = database_path();
elixir()
Hàm elixir
trả về đường dẫn của file Elixir được đánh version:
elixir($file);
public_path()
Hàm public_path
trả về đường dẫn đầy dủ tới thư mục public
:
$path = public_path();
storage_path()
Hàm storage_path
trả về đường dẫn đầy đủ tới thư mục storage
:
$path = storage_path();
Bạn cũng có thể sử dụng hàm storage_path
để sinh ra đường dẫn đầy đủ tới một file relative tới thư mục storage:
$path = storage_path('app/file.txt');
Strings
camel_case()
Hàm camel_case
convert một chuỗi thành kiểu camelCase
:
$camel = camel_case('foo_bar');
// fooBar
class_basename()
Hàm class_basename
trả về tên của class với namespace được gỡ đi:
$class = class_basename('Foo\Bar\Baz');
// Baz
e()
Hàm e
thực hiện gọi hàm htmlentities
trên một chuỗi:
echo e('<html>foo</html>');
// <html>foo</html>
ends_with()
Hàm ends_with
cho biết nếu một chuỗi kết thúc bằng một chuỗi con hay không:
$value = ends_with('This is my name', 'name');
// true
snake_case()
Hàm snake_case
convert một chuỗi thành kiểu snake_case
:
$snake = snake_case('fooBar');
// foo_bar
str_limit()
Hàm str_limit
giới hạn số lượng character trong một chuỗi. Hàm nhận vào một chuỗi ở tham số đầu và số lượng kí tự tối đa ở tham số thứ hai:
$value = str_limit('The PHP framework for web artisans.', 7);
// The PHP...
starts_with()
Hàm starts_with
cho biết nếu một chuỗi bắt đầu bằng một chuỗi con cho trước hay không:
$value = starts_with('This is my name', 'This');
// true
str_contains()
Hàm str_contains
cho biết nếu một chuỗi có chứa một chuỗi con khác hay không:
$value = str_contains('This is my name', 'my');
// true
str_finish()
Hàm str_finish
thêm một kí tự vào cuối một chuỗi:
$string = str_finish('this/string', '/');
// this/string/
str_is()
Hàm str_is
cho biết nếu một chuỗi có khớp với một pattern nào không. Dấu *
có thể đươc dùng để đánh dấu wildcards:
$value = str_is('foo*', 'foobar');
// true
$value = str_is('baz*', 'foobar');
// false
str_plural()
Hàm str_plural
convert một chuỗi sang số nhiều. Hàm này hiện tại chỉ hỗ trợ tiếng Anh:
$plural = str_plural('car');
// cars
$plural = str_plural('child');
// children
Bạn có thể cung cấp một số nguyên vào tham số thứ hai để lấy giá trị số ít hay số nhiều của chuỗi:
$plural = str_plural('child', 2);
// children
$plural = str_plural('child', 1);
// child
str_random()
Hàm str_random
sinh ra một chuỗi ngẫu nhiên với độ dài cho trước:
$string = str_random(40);
str_singular()
Hàm str_singular
convert một chuỗi sang số ít. Hàm này hiện tại chỉ hỗ trợ tiếng Anh:
$singular = str_singular('cars');
// car
str_slug()
Hàm str_slug
sinh ra một "slug" thân thiện cho URL:
$title = str_slug('Laravel 5 Framework', '-');
// laravel-5-framework
studly_case()
Hàm studly_case
convert một chuỗi cho trước thành kiểu StudlyCase
:
$value = studly_case('foo_bar');
// FooBar
trans()
Hàm trans
dịch một dòng ngôn ngữ khai báo trong localization files:
echo trans('validation.required'):
trans_choice()
Hàm trans_choice
dịch một dòng ngôn ngữ với một chút biến đổi:
$value = trans_choice('foo.bar', $count);
URLs
action()
Hàm action
sinh ra một URL cho một controller action. Bạn không cần truyền vào đầy đủ namespace tới controller. Thay vào đó, truyền tên class của controller relative với namespace App\Http\Controllers
:
$url = action('HomeController@getIndex');
Nếu hàm nhận route parameters, bạn có thể truyền chúng vào tham số thứ hai:
$url = action('UserController@profile', ['id' => 1]);
asset()
Sinh ra một URL cho asset sử dụng scheme hiện tại của request (HTTP hoặc HTTPS):
$url = asset('img/photo.jpg');
secure_asset()
Sinh ra một URL cho asset sử dụng HTTPS:
echo secure_asset('foo/bar.zip', $title, $attributes = []);
route()
Hàm route
sinh ra một URL cho một route có tên:
$url = route('routeName');
Nếu route này có nhận parameters, bạn có thể truyền chúng vào tham số thứ hai:
$url = route('routeName', ['id' => 1]);
url()
Hàm url
sinh ra URL đầy đủ cho một path cho trước:
echo url('user/profile');
echo url('user/profile', [1]);
Nếu path không được cung cấp, một instance của Illuminate\Routing\UrlGenerator
sẽ được trả về:
echo url()->current();
echo url()->full();
echo url()->previous();
Các hàm khác
auth()
Hàm auth
trả về một instance của authenticator. Bạn có thể sử dụng nó thay vì Auth
facade:
$user = auth()->user();
back()
Hàm back()
sinh ra một response để redirect lại location trước của user:
return back();
bcrypt()
Hàm bcrypt
thực hiện hash một giá trị sử dụng Bcrypt. Bạn có thể sử dụng nó như một cách thay thế cho Hash
facade:
$password = bcrypt('my-secret-password');
collect()
Hàm collect
tạo một instance của collection từ items được cung cấp:
$collection = collect(['taylor', 'abigail']);
config()
Hàm config
lấy giá trị của một biến cấu hình. Giá trị cấu hình có thể truy xuất sử dụng kí hiệu "dot", bao gồm tên file và thông số muốn lấy ra. Giá trị mặc định có thể được truyền vào và trả lại nếu giá trị cấu hình không tồn tại:
$value = config('app.timezone');
$value = config('app.timezone', $default);
Hàm config
cũng có thể được dùng để đặt giá trị biến cấu hình lúc chạy bằng cách truyền vào một mảng các cặp key / value:
config(['app.debug' => true]);
csrf_field()
Hàm csrf_field
sinh ra một trường HTML input hidden
có chứa giá trị token CSRF. Ví dụ, khi sử dụng Blade syntax:
{{ csrf_field() }}
csrf_token()
Hàm csrf_token
trả về giá trị của token CSRF hiện tại:
$token = csrf_token();
dd()
Hàm dd
được dùng để dump một biến ra và dừng việc thực thi script:
dd($value);
Nếu bạn không muốn làm treo việc thực thi script, có thể sử dụng hàm dump
:
dump($value);
dispatch()
Hàm dispatch
đẩy một job mới vào trong Laravel job queue:
dispatch(new App\Jobs\SendEmails);
env()
Hàm env
lấy giá trị của biến môi trường hoặc trả lại giá trị mặc định:
$env = env('APP_ENV');
// Return a default value if the variable doesn't exist...
$env = env('APP_ENV', 'production');
event()
Hàm event
đẩy một event tới các listeners:
event(new UserRegistered($user));
factory()
Hàm factory
tạo một builder cho model factory cho một class, với tên và số lượng. Nó có thể sử dụng trong testing hoặc seeding:
$user = factory(App\User::class)->make();
method_field()
The method_field
function generates an HTML hidden
input field containing the spoofed value of the form's HTTP verb. For example, using Blade syntax:
Hàm method_field
tạo ra một trường HTML input hidden
chứa giá trị của động từ HTTP. Ví dụ, sử dụng cú pháp Blade:
<form method="POST">
{{ method_field('DELETE') }}
</form>
old()
Hàm old
lấy giá trị input cũ flash vào trong session:
$value = old('value');
$value = old('value', 'default');
redirect()
Hàm redirect
trả về một instance của redirector để thực hiện redirects:
return redirect('/home');
request()
Hàm request
trả về instance của request hiện tại hay lấy item input:
$request = request();
$value = request('key', $default = null)
response()
Hàm response
tạo một instance của response instance hoặc lấy instance của response factory:
return response('Hello World', 200, $headers);
return response()->json(['foo' => 'bar'], 200, $headers);
session()
Hàm session
có thể được dùng để get / set giá trị cho session:
$value = session('key');
Bạn có thể set giá trị bằng cách truyền một mảng key / value vào hàm:
session(['chairs' => 7, 'instruments' => 3]);
Session store sẽ được trả lại nếu không có giá trị nào truyền vào hàm:
$value = session()->get('key');
session()->put('key', $value);
value()
Hàm value
đơn giản chỉ trả về giá trị được cung cấp. Tuy nhiên, nếu bạn truyền vào một Closure
, thì Closure
sẽ được thực thi và trả lại giá trị trong đó:
$value = value(function() { return 'bar'; });
view()
Hàm view
lấy giá trị từ instance của view:
return view('auth.login');
with()
Hàm with
trả về giá trị nó được cung cấp. Hàm này mục đích chính hữu ích cho việc thực hiện móc nối các hàm:
$value = with(new Foo)->work();
##
Như vậy mình đã giới thiệu cho các bạn khá là chi tiết về Helpers trong laravel. Mọi thắc mắc cần giải đáp hãy để lại comment ở phía dưới nhé! Tham Khảo https://laravel.com/docs/5.4
All rights reserved