Hàm Helper

Giới thiệu

Laravel có chứa danh sách các hàm PHP "helper". Trong số này, nhiều hàm được sử dụng bên trong framework; tuy nhiên, bạn có thể thoải mái sử dụng chúng trong ứng dụng nếu bạn cảm thấy tiện.

Các phương thức tồn tại

Arrays

Paths

Strings

URLs

Miscellaneous

Danh sách 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 flattens các mảng đa chiều thành mảng một chiều sử dụng kí hiệu "dấu chấm" để đá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 ($value, $key) {
    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 flatten 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 "dấu chấm":

$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 "dấu chấm":

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

$value = array_get($array, 'products.desk');

// ['price' => 100]

The array_get function also accepts a default value, which will be returned if the specific key is not found:

$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 "dấu chấm":

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

$hasItem = array_has($array, 'product.name');

// true

$hasItems = array_has($array, ['product.price', 'product.discount']);

// false

array_last()

Hàm array_last trả về phần tử cuối cùng của mảng truyền vào theo một điều kiện:

$array = [100, 200, 300, 110];

$value = array_last($array, function ($value, $key) {
    return $value >= 150;
});

// 300

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 "dấu chấm":

$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 đệ 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 flọc mảng theo một Closure cho trước:

$array = [100, '200', 300, '400', 500];

$array = array_where($array, function ($value, $key) {
    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. Ngoài ra bạn cũng có thể 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();

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

base_path()

Hàm base_path trả về đường dẫn đầy đủ của project root. Bạn cũng có thể 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();

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

config_path()

The 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 versioned Elixir:

elixir($file);

public_path()

Hàm public_path trả về đường dẫn đầy dủ tới thư mục public:

$path = public_path();

resource_path()

Hàm resource_path ftrả về đường dẫn đầy dủ tới thư mục resources. Bạn có thể sử dụng hàm resource_path để tạo đường dẫn đầy đủ tới một file relative tới thư mục resource ứng dụng:

$path = resource_path();

$path = resource_path('assets/sass/app.scss');

storage_path()

Hàm storage_path trả về đường dẫn đầy đủ tới thư mục storage. Bạn 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();

$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 trả về 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

Bạn có thể truyền vào một mảng giá trị để cho biết chuỗi có chứa bất kỳ giá trị nào trong mảng không:

$value = str_contains('This is my name', ['my', 'foo']);

// 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. Hàm này sử dụng hàm random_bytes của PHP:

$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

title_case()

Hàm title_case convert một chuỗi cho trước thành kiểu Title Case:

$title = title_case('a nice title uses the correct case');

// A Nice Title Uses The Correct Case

trans()

Hàm trans dịch một dòng ngôn ngữ khai báo trongr 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 namespace:

$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

abort()

Hàm abort ném về một HTTP exception nó sẽ được render bởi exception handler:

abort(401);

Ngoài ra nó còn cho phép đoạn text khi có response texception:

abort(401, 'Unauthorized.');

abort_if()

Hàm abort_if trả về một HTTP exception nếu biểu thức có giá trị true:

abort_if(! Auth::user()->isAdmin(), 403);

abort_unless()

Hàm abort_unless ném về một HTTP exception nếu biểu thức có giá trị false:

abort_unless(Auth::user()->isAdmin(), 403);

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

cache()

Hàm cache được sử dụng để lấy giá trị từ Cache. Nếu key không tồn tại trong cache, một giá trị mặc định sẽ được trả về:

$value = cache('key');

$value = cache('key', 'default');

Bạn có thể thêm các item vào cache bằng cách truyền vào một mảng các cặp key / value vào hàm. Bạn cũng có thẻ truyền vào số phút hoặc thời gian cache sẽ hết hạn:

cache(['key' => 'value'], 5);

cache(['key' => 'value'], Carbon::now()->addSeconds(10));

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 "dấu chấm", 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 icó 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);

dd($value1, $value2, $value3, ...);

If you do not want to halt the execution of your script, use the dump function instead:

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 or seeding:

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

info()

Hàm info viết thông tin vào log:

info('Some helpful information!');

Bạn cũng có thể truyền một mảng vào hàm như là đối số thứ hai:

info('User login attempt failed.', ['id' => $user->id]);

logger()

Hàm logger có thể sử dụng để viết level debugnội dung vào log:

logger('Debug message');

Bạn cũng có thể truyền vào một mảng vào hàm như đối số thứ hai:

logger('User has logged in.', ['id' => $user->id]);

Một logger instance sẽ được trả về nếu không có giá trị được truyền vào hàm:

logger()->error('You are not allowed here.');

method_field()

Hàm method_field tạo ra một trường HTML hidden chứa giá trị của động từ HTTP. Ví dụ, sử dụng Blade syntax:

<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, hoặc trả về một redirector instance nếu hàm không có tham số truyền vào:

return redirect('/home');

return redirect()->route('route.name');

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 tthì 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');
Nguồn: https://laravel.com/docs/5.3/helpers