+3

Helpers trong Laravel 5.3

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

// &lt;html&gt;foo&lt;/html&gt;

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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí