Хелпери · Laravel
Частину підрозділів ще не перекладено, вони показані англійською нижче в тексті або лишились в оригіналі. Готові фрагменти вже перевірені редактором.
Вступ
Laravel містить набір глобальних «хелперних» PHP-функцій. Багато з них використовує сам фреймворк, але ніщо не заважає застосовувати їх і у власних застосунках, якщо вони вам зручні.
Доступні методи
Масиви й обʼєкти
Arr::accessible Arr::add Arr::array Arr::boolean Arr::collapse Arr::crossJoin Arr::divide Arr::dot Arr::every Arr::except Arr::exceptValues Arr::exists Arr::first Arr::flatten Arr::float Arr::forget Arr::from Arr::get Arr::has Arr::hasAll Arr::hasAny Arr::integer Arr::isAssoc Arr::isList Arr::join Arr::keyBy Arr::last Arr::map Arr::mapSpread Arr::mapWithKeys Arr::only Arr::onlyValues Arr::partition Arr::pluck Arr::prepend Arr::prependKeysWith Arr::pull Arr::push Arr::query Arr::random Arr::reject Arr::select Arr::set Arr::shuffle Arr::sole Arr::some Arr::sort Arr::sortDesc Arr::sortRecursive Arr::string Arr::take Arr::toCssClasses Arr::toCssStyles Arr::undot Arr::where Arr::whereNotNull Arr::wrap data_fill data_get data_set data_forget head last
Числа
Number::abbreviate Number::clamp Number::currency Number::defaultCurrency Number::defaultLocale Number::fileSize Number::forHumans Number::format Number::ordinal Number::pairs Number::parse Number::parseInt Number::parseFloat Number::percentage Number::spell Number::spellOrdinal Number::trim Number::useLocale Number::withLocale Number::useCurrency Number::withCurrency
Шляхи
app_path base_path config_path database_path lang_path public_path resource_path storage_path
URL
action asset route secure_asset secure_url to_action to_route uri url
Різне
abort abort_if abort_unless app auth back bcrypt blank broadcast broadcast_if broadcast_unless cache class_uses_recursive collect config context cookie csrf_field csrf_token decrypt dd dispatch dispatch_sync dump encrypt env event fake filled info literal logger method_field now old once optional policy redirect report report_if report_unless request rescue resolve response retry session tap throw_if throw_unless today trait_uses_recursive transform validator value view with when
Масиви й обʼєкти
Arr::accessible()
Метод Arr::accessible визначає, чи є передане значення доступним як масив:
use Illuminate\Support\Arr;
use Illuminate\Support\Collection;
$isAccessible = Arr::accessible(['a' => 1, 'b' => 2]);
// true
$isAccessible = Arr::accessible(new Collection);
// true
$isAccessible = Arr::accessible('abc');
// false
$isAccessible = Arr::accessible(new stdClass);
// false
Arr::add()
Метод Arr::add додає до масиву задану пару ключ / значення, якщо такого ключа в масиві ще немає або його значення дорівнює null:
use Illuminate\Support\Arr;
$array = Arr::add(['name' => 'Desk'], 'price', 100);
// ['name' => 'Desk', 'price' => 100]
$array = Arr::add(['name' => 'Desk', 'price' => null], 'price', 100);
// ['name' => 'Desk', 'price' => 100]
Arr::array()
Метод Arr::array дістає значення з глибоко вкладеного масиву за «крапковою» нотацією (так само, як Arr::get()), але кидає InvalidArgumentException, якщо запитане значення не є array:
use Illuminate\Support\Arr;
$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];
$value = Arr::array($array, 'languages');
// ['PHP', 'Ruby']
$value = Arr::array($array, 'name');
// throws InvalidArgumentException
Arr::boolean()
Метод Arr::boolean дістає значення з глибоко вкладеного масиву за «крапковою» нотацією (так само, як Arr::get()), але кидає InvalidArgumentException, якщо запитане значення не є boolean:
use Illuminate\Support\Arr;
$array = ['name' => 'Joe', 'available' => true];
$value = Arr::boolean($array, 'available');
// true
$value = Arr::boolean($array, 'name');
// throws InvalidArgumentException
Arr::collapse()
Метод Arr::collapse згортає масив масивів або колекцій в один масив:
use Illuminate\Support\Arr;
$array = Arr::collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
Arr::crossJoin()
Метод Arr::crossJoin перехресно обʼєднує передані масиви, повертаючи декартів добуток з усіма можливими комбінаціями:
use Illuminate\Support\Arr;
$matrix = Arr::crossJoin([1, 2], ['a', 'b']);
/*
[
[1, 'a'],
[1, 'b'],
[2, 'a'],
[2, 'b'],
]
*/
$matrix = Arr::crossJoin([1, 2], ['a', 'b'], ['I', 'II']);
/*
[
[1, 'a', 'I'],
[1, 'a', 'II'],
[1, 'b', 'I'],
[1, 'b', 'II'],
[2, 'a', 'I'],
[2, 'a', 'II'],
[2, 'b', 'I'],
[2, 'b', 'II'],
]
*/
Arr::divide()
Метод Arr::divide повертає два масиви: один із ключами, другий зі значеннями переданого масиву:
use Illuminate\Support\Arr;
[$keys, $values] = Arr::divide(['name' => 'Desk']);
// $keys: ['name']
// $values: ['Desk']
Arr::dot()
Метод Arr::dot розгортає багатовимірний масив в одновимірний, де глибина позначена «крапковою» нотацією:
use Illuminate\Support\Arr;
$array = ['products' => ['desk' => ['price' => 100]]];
$flattened = Arr::dot($array);
// ['products.desk.price' => 100]
Arr::every()
Метод Arr::every перевіряє, що всі значення масиву проходять задану перевірку:
use Illuminate\Support\Arr;
$array = [1, 2, 3];
Arr::every($array, fn ($i) => $i > 0);
// true
Arr::every($array, fn ($i) => $i > 2);
// false
Arr::except()
Метод Arr::except видаляє з масиву задані пари ключ / значення:
use Illuminate\Support\Arr;
$array = ['name' => 'Desk', 'price' => 100];
$filtered = Arr::except($array, ['price']);
// ['name' => 'Desk']
Arr::exceptValues()
Метод Arr::exceptValues видаляє з масиву вказані значення:
use Illuminate\Support\Arr;
$array = ['foo', 'bar', 'baz', 'qux'];
$filtered = Arr::exceptValues($array, ['foo', 'baz']);
// ['bar', 'qux']
Щоб під час фільтрації використовувалося строге порівняння типів, передайте true в аргумент strict:
use Illuminate\Support\Arr;
$array = [1, '1', 2, '2'];
$filtered = Arr::exceptValues($array, [1, 2], strict: true);
// ['1', '2']
Arr::exists()
Метод Arr::exists перевіряє, чи існує заданий ключ у переданому масиві:
use Illuminate\Support\Arr;
$array = ['name' => 'John Doe', 'age' => 17];
$exists = Arr::exists($array, 'name');
// true
$exists = Arr::exists($array, 'salary');
// false
Arr::first()
Метод Arr::first повертає перший елемент масиву, який проходить задану перевірку:
use Illuminate\Support\Arr;
$array = [100, 200, 300];
$first = Arr::first($array, function (int $value, int $key) {
return $value >= 150;
});
// 200
Третім параметром методу можна передати значення за замовчуванням. Воно повернеться, якщо жодне значення не пройде перевірку:
use Illuminate\Support\Arr;
$first = Arr::first($array, $callback, $default);
Arr::flatten()
Метод Arr::flatten розгортає багатовимірний масив в одновимірний:
use Illuminate\Support\Arr;
$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];
$flattened = Arr::flatten($array);
// ['Joe', 'PHP', 'Ruby']
Arr::float()
Метод Arr::float дістає значення з глибоко вкладеного масиву за «крапковою» нотацією (так само, як Arr::get()), але кидає InvalidArgumentException, якщо запитане значення не є float:
use Illuminate\Support\Arr;
$array = ['name' => 'Joe', 'balance' => 123.45];
$value = Arr::float($array, 'balance');
// 123.45
$value = Arr::float($array, 'name');
// throws InvalidArgumentException
Arr::forget()
Метод Arr::forget видаляє задані пари ключ / значення з глибоко вкладеного масиву за «крапковою» нотацією:
use Illuminate\Support\Arr;
$array = ['products' => ['desk' => ['price' => 100]]];
Arr::forget($array, 'products.desk');
// ['products' => []]
Arr::from()
Метод Arr::from перетворює різні типи вхідних даних на звичайний PHP-масив. Він підтримує масиви, обʼєкти та кілька поширених інтерфейсів Laravel, зокрема Arrayable, Enumerable, Jsonable і JsonSerializable. Також він обробляє екземпляри Traversable і WeakMap:
use Illuminate\Support\Arr;
Arr::from((object) ['foo' => 'bar']); // ['foo' => 'bar']
class TestJsonableObject implements Jsonable
{
public function toJson($options = 0)
{
return json_encode(['foo' => 'bar']);
}
}
Arr::from(new TestJsonableObject); // ['foo' => 'bar']
Arr::get()
Метод Arr::get дістає значення з глибоко вкладеного масиву за «крапковою» нотацією:
use Illuminate\Support\Arr;
$array = ['products' => ['desk' => ['price' => 100]]];
$price = Arr::get($array, 'products.desk.price');
// 100
Метод Arr::get також приймає значення за замовчуванням, яке повернеться, якщо вказаного ключа в масиві немає:
use Illuminate\Support\Arr;
$discount = Arr::get($array, 'products.desk.discount', 0);
// 0
Arr::has()
Метод Arr::has перевіряє наявність у масиві заданого елемента або елементів за «крапковою» нотацією:
use Illuminate\Support\Arr;
$array = ['product' => ['name' => 'Desk', 'price' => 100]];
$contains = Arr::has($array, 'product.name');
// true
$contains = Arr::has($array, ['product.price', 'product.discount']);
// false
Arr::hasAll()
Метод Arr::hasAll визначає, чи існують у переданому масиві всі вказані ключі, використовуючи «крапкову» нотацію:
use Illuminate\Support\Arr;
$array = ['name' => 'Taylor', 'language' => 'PHP'];
Arr::hasAll($array, ['name']); // true
Arr::hasAll($array, ['name', 'language']); // true
Arr::hasAll($array, ['name', 'IDE']); // false
Arr::hasAny()
Метод Arr::hasAny перевіряє, чи існує в масиві хоч один елемент із заданого набору, використовуючи «крапкову» нотацію:
use Illuminate\Support\Arr;
$array = ['product' => ['name' => 'Desk', 'price' => 100]];
$contains = Arr::hasAny($array, 'product.name');
// true
$contains = Arr::hasAny($array, ['product.name', 'product.discount']);
// true
$contains = Arr::hasAny($array, ['category', 'product.discount']);
// false
Arr::integer()
Метод Arr::integer дістає значення з глибоко вкладеного масиву за «крапковою» нотацією (так само, як Arr::get()), але кидає InvalidArgumentException, якщо запитане значення не є int:
use Illuminate\Support\Arr;
$array = ['name' => 'Joe', 'age' => 42];
$value = Arr::integer($array, 'age');
// 42
$value = Arr::integer($array, 'name');
// throws InvalidArgumentException
Arr::isAssoc()
Метод Arr::isAssoc повертає true, якщо переданий масив асоціативний. Масив вважається «асоціативним», якщо він не має послідовних числових ключів, що починаються з нуля:
use Illuminate\Support\Arr;
$isAssoc = Arr::isAssoc(['product' => ['name' => 'Desk', 'price' => 100]]);
// true
$isAssoc = Arr::isAssoc([1, 2, 3]);
// false
Arr::isList()
Метод Arr::isList повертає true, якщо ключі переданого масиву є послідовними цілими числами, що починаються з нуля:
use Illuminate\Support\Arr;
$isList = Arr::isList(['foo', 'bar', 'baz']);
// true
$isList = Arr::isList(['product' => ['name' => 'Desk', 'price' => 100]]);
// false
Arr::join()
Метод Arr::join обʼєднує елементи масиву рядком. Третім аргументом можна задати окремий розділювач для останнього елемента масиву:
use Illuminate\Support\Arr;
$array = ['Tailwind', 'Alpine', 'Laravel', 'Livewire'];
$joined = Arr::join($array, ', ');
// Tailwind, Alpine, Laravel, Livewire
$joined = Arr::join($array, ', ', ', and ');
// Tailwind, Alpine, Laravel, and Livewire
Arr::keyBy()
Метод Arr::keyBy робить ключами масиву значення заданого ключа. Якщо кілька елементів мають однаковий ключ, у новому масиві залишиться тільки останній:
use Illuminate\Support\Arr;
$array = [
['product_id' => 'prod-100', 'name' => 'Desk'],
['product_id' => 'prod-200', 'name' => 'Chair'],
];
$keyed = Arr::keyBy($array, 'product_id');
/*
[
'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'],
'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'],
]
*/
Arr::last()
Метод Arr::last повертає останній елемент масиву, який проходить задану перевірку:
use Illuminate\Support\Arr;
$array = [100, 200, 300, 110];
$last = Arr::last($array, function (int $value, int $key) {
return $value >= 150;
});
// 300
Третім аргументом методу можна передати значення за замовчуванням. Воно повернеться, якщо жодне значення не пройде перевірку:
use Illuminate\Support\Arr;
$last = Arr::last($array, $callback, $default);
Arr::map()
Метод Arr::map проходить масивом і передає кожне значення та ключ у заданий колбек. Значення масиву замінюється тим, що повернув колбек:
use Illuminate\Support\Arr;
$array = ['first' => 'james', 'last' => 'kirk'];
$mapped = Arr::map($array, function (string $value, string $key) {
return ucfirst($value);
});
// ['first' => 'James', 'last' => 'Kirk']
Arr::mapSpread()
Метод Arr::mapSpread проходить масивом і передає значення кожного вкладеного елемента в задане замикання. Замикання може змінити елемент і повернути його, формуючи новий масив змінених елементів:
use Illuminate\Support\Arr;
$array = [
[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9],
];
$mapped = Arr::mapSpread($array, function (int $even, int $odd) {
return $even + $odd;
});
/*
[1, 5, 9, 13, 17]
*/
Arr::mapWithKeys()
Метод Arr::mapWithKeys проходить масивом і передає кожне значення в заданий колбек. Колбек має повернути асоціативний масив з однією парою ключ / значення:
use Illuminate\Support\Arr;
$array = [
[
'name' => 'John',
'department' => 'Sales',
'email' => 'john@example.com',
],
[
'name' => 'Jane',
'department' => 'Marketing',
'email' => 'jane@example.com',
]
];
$mapped = Arr::mapWithKeys($array, function (array $item, int $key) {
return [$item['email'] => $item['name']];
});
/*
[
'john@example.com' => 'John',
'jane@example.com' => 'Jane',
]
*/
Arr::only()
Метод Arr::only повертає з переданого масиву лише вказані пари ключ / значення:
use Illuminate\Support\Arr;
$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];
$slice = Arr::only($array, ['name', 'price']);
// ['name' => 'Desk', 'price' => 100]
Arr::onlyValues()
Метод Arr::onlyValues повертає з масиву лише вказані значення:
use Illuminate\Support\Arr;
$array = ['foo', 'bar', 'baz', 'qux'];
$filtered = Arr::onlyValues($array, ['foo', 'baz']);
// ['foo', 'baz']
Щоб під час фільтрації використовувалося строге порівняння типів, передайте true в аргумент strict:
use Illuminate\Support\Arr;
$array = [1, '1', 2, '2'];
$filtered = Arr::onlyValues($array, [1, 2], strict: true);
// [1, 2]
Arr::partition()
Метод Arr::partition у поєднанні з деструктуризацією масивів PHP розділяє елементи, що проходять задану перевірку, і ті, що її не проходять:
<?php
use Illuminate\Support\Arr;
$numbers = [1, 2, 3, 4, 5, 6];
[$underThree, $equalOrAboveThree] = Arr::partition($numbers, function (int $i) {
return $i < 3;
});
dump($underThree);
// [1, 2]
dump($equalOrAboveThree);
// [3, 4, 5, 6]
Arr::pluck()
Метод Arr::pluck дістає з масиву всі значення за заданим ключем:
use Illuminate\Support\Arr;
$array = [
['developer' => ['id' => 1, 'name' => 'Taylor']],
['developer' => ['id' => 2, 'name' => 'Abigail']],
];
$names = Arr::pluck($array, 'developer.name');
// ['Taylor', 'Abigail']
Можна також вказати, за яким ключем формувати результат:
use Illuminate\Support\Arr;
$names = Arr::pluck($array, 'developer.name', 'developer.id');
// [1 => 'Taylor', 2 => 'Abigail']
Arr::prepend()
Метод Arr::prepend додає елемент на початок масиву:
use Illuminate\Support\Arr;
$array = ['one', 'two', 'three', 'four'];
$array = Arr::prepend($array, 'zero');
// ['zero', 'one', 'two', 'three', 'four']
За потреби можна вказати ключ, який слід використати для значення:
use Illuminate\Support\Arr;
$array = ['price' => 100];
$array = Arr::prepend($array, 'Desk', 'name');
// ['name' => 'Desk', 'price' => 100]
Arr::prependKeysWith()
Метод Arr::prependKeysWith додає заданий префікс до всіх імен ключів асоціативного масиву:
use Illuminate\Support\Arr;
$array = [
'name' => 'Desk',
'price' => 100,
];
$keyed = Arr::prependKeysWith($array, 'product.');
/*
[
'product.name' => 'Desk',
'product.price' => 100,
]
*/
Arr::pull()
Метод Arr::pull повертає пару ключ / значення і видаляє її з масиву:
use Illuminate\Support\Arr;
$array = ['name' => 'Desk', 'price' => 100];
$name = Arr::pull($array, 'name');
// $name: Desk
// $array: ['price' => 100]
Третім аргументом методу можна передати значення за замовчуванням. Воно повернеться, якщо ключа не існує:
use Illuminate\Support\Arr;
$value = Arr::pull($array, $key, $default);
Arr::push()
Метод Arr::push додає елемент до масиву за «крапковою» нотацією. Якщо за вказаним ключем масиву немає, його буде створено:
use Illuminate\Support\Arr;
$array = [];
Arr::push($array, 'office.furniture', 'Desk');
// $array: ['office' => ['furniture' => ['Desk']]]
Arr::query()
Метод Arr::query перетворює масив на рядок запиту:
use Illuminate\Support\Arr;
$array = [
'name' => 'Taylor',
'order' => [
'column' => 'created_at',
'direction' => 'desc'
]
];
Arr::query($array);
// name=Taylor&order[column]=created_at&order[direction]=desc
Arr::random()
Метод Arr::random повертає випадкове значення з масиву:
use Illuminate\Support\Arr;
$array = [1, 2, 3, 4, 5];
$random = Arr::random($array);
// 4 - (отримано випадково)
Другим необовʼязковим аргументом можна вказати кількість елементів, які потрібно повернути. Зверніть увагу: з цим аргументом метод поверне масив, навіть якщо потрібен лише один елемент:
use Illuminate\Support\Arr;
$items = Arr::random($array, 2);
// [2, 5] - (отримано випадково)
Arr::reject()
Метод Arr::reject видаляє з масиву елементи за допомогою заданого замикання:
use Illuminate\Support\Arr;
$array = [100, '200', 300, '400', 500];
$filtered = Arr::reject($array, function (string|int $value, int $key) {
return is_string($value);
});
// [0 => 100, 2 => 300, 4 => 500]
Arr::select()
Метод Arr::select вибирає з масиву масив значень:
use Illuminate\Support\Arr;
$array = [
['id' => 1, 'name' => 'Desk', 'price' => 200],
['id' => 2, 'name' => 'Table', 'price' => 150],
['id' => 3, 'name' => 'Chair', 'price' => 300],
];
Arr::select($array, ['name', 'price']);
// [['name' => 'Desk', 'price' => 200], ['name' => 'Table', 'price' => 150], ['name' => 'Chair', 'price' => 300]]
Arr::set()
Метод Arr::set встановлює значення всередині глибоко вкладеного масиву за «крапковою» нотацією:
use Illuminate\Support\Arr;
$array = ['products' => ['desk' => ['price' => 100]]];
Arr::set($array, 'products.desk.price', 200);
// ['products' => ['desk' => ['price' => 200]]]
Arr::shuffle()
Метод Arr::shuffle випадково перемішує елементи масиву:
use Illuminate\Support\Arr;
$array = Arr::shuffle([1, 2, 3, 4, 5]);
// [3, 2, 5, 1, 4] - (згенеровано випадково)
Arr::sole()
Метод Arr::sole дістає з масиву одне значення за допомогою заданого замикання. Якщо перевірку проходить більше одного значення масиву, буде кинуто виняток Illuminate\Support\MultipleItemsFoundException. Якщо перевірку не проходить жодне значення, буде кинуто виняток Illuminate\Support\ItemNotFoundException:
use Illuminate\Support\Arr;
$array = ['Desk', 'Table', 'Chair'];
$value = Arr::sole($array, fn (string $value) => $value === 'Desk');
// 'Desk'
Arr::some()
Метод Arr::some перевіряє, що принаймні одне значення масиву проходить задану перевірку:
use Illuminate\Support\Arr;
$array = [1, 2, 3];
Arr::some($array, fn ($i) => $i > 2);
// true
Arr::sort()
Метод Arr::sort сортує масив за його значеннями:
use Illuminate\Support\Arr;
$array = ['Desk', 'Table', 'Chair'];
$sorted = Arr::sort($array);
// ['Chair', 'Desk', 'Table']
Масив також можна відсортувати за результатами заданого замикання:
use Illuminate\Support\Arr;
$array = [
['name' => 'Desk'],
['name' => 'Table'],
['name' => 'Chair'],
];
$sorted = array_values(Arr::sort($array, function (array $value) {
return $value['name'];
}));
/*
[
['name' => 'Chair'],
['name' => 'Desk'],
['name' => 'Table'],
]
*/
Arr::sortDesc()
Метод Arr::sortDesc сортує масив за його значеннями у спадному порядку:
use Illuminate\Support\Arr;
$array = ['Desk', 'Table', 'Chair'];
$sorted = Arr::sortDesc($array);
// ['Table', 'Desk', 'Chair']
Масив також можна відсортувати за результатами заданого замикання:
use Illuminate\Support\Arr;
$array = [
['name' => 'Desk'],
['name' => 'Table'],
['name' => 'Chair'],
];
$sorted = array_values(Arr::sortDesc($array, function (array $value) {
return $value['name'];
}));
/*
[
['name' => 'Table'],
['name' => 'Desk'],
['name' => 'Chair'],
]
*/
Arr::sortRecursive()
Метод Arr::sortRecursive рекурсивно сортує масив, застосовуючи функцію sort до підмасивів із числовими індексами і функцію ksort до асоціативних підмасивів:
use Illuminate\Support\Arr;
$array = [
['Roman', 'Taylor', 'Li'],
['PHP', 'Ruby', 'JavaScript'],
['one' => 1, 'two' => 2, 'three' => 3],
];
$sorted = Arr::sortRecursive($array);
/*
[
['JavaScript', 'PHP', 'Ruby'],
['one' => 1, 'three' => 3, 'two' => 2],
['Li', 'Roman', 'Taylor'],
]
*/
Якщо потрібен результат у спадному порядку, скористайтеся методом Arr::sortRecursiveDesc.
$sorted = Arr::sortRecursiveDesc($array);
Arr::string()
Метод Arr::string дістає значення з глибоко вкладеного масиву за «крапковою» нотацією (так само, як Arr::get()), але кидає InvalidArgumentException, якщо запитане значення не є string:
use Illuminate\Support\Arr;
$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];
$value = Arr::string($array, 'name');
// Joe
$value = Arr::string($array, 'languages');
// throws InvalidArgumentException
Arr::take()
Метод Arr::take повертає новий масив із вказаною кількістю елементів:
use Illuminate\Support\Arr;
$array = [0, 1, 2, 3, 4, 5];
$chunk = Arr::take($array, 3);
// [0, 1, 2]
Можна також передати відʼємне ціле число, щоб узяти вказану кількість елементів з кінця масиву:
$array = [0, 1, 2, 3, 4, 5];
$chunk = Arr::take($array, -2);
// [4, 5]
Arr::toCssClasses()
Метод Arr::toCssClasses умовно збирає рядок CSS-класів. Метод приймає масив класів, де ключ масиву містить клас або класи, які потрібно додати, а значення є булевим виразом. Якщо елемент масиву має числовий ключ, він завжди потрапляє до згенерованого списку класів:
use Illuminate\Support\Arr;
$isActive = false;
$hasError = true;
$array = ['p-4', 'font-bold' => $isActive, 'bg-red' => $hasError];
$classes = Arr::toCssClasses($array);
/*
'p-4 bg-red'
*/
Arr::toCssStyles()
Метод Arr::toCssStyles умовно збирає рядок CSS-стилів. Метод приймає масив CSS-декларацій, де ключ масиву містить CSS-декларацію, яку потрібно додати, а значення є булевим виразом. Якщо елемент масиву має числовий ключ, він завжди потрапляє до зібраного рядка CSS-стилів:
use Illuminate\Support\Arr;
$hasColor = true;
$array = ['background-color: blue', 'color: blue' => $hasColor];
$classes = Arr::toCssStyles($array);
/*
'background-color: blue; color: blue;'
*/
На цьому методі побудована можливість Laravel обʼєднувати класи з мішком атрибутів Blade-компонента, а також Blade-директива @class.
Arr::undot()
Метод Arr::undot розгортає одновимірний масив, що використовує «крапкову» нотацію, у багатовимірний:
use Illuminate\Support\Arr;
$array = [
'user.name' => 'Kevin Malone',
'user.occupation' => 'Accountant',
];
$array = Arr::undot($array);
// ['user' => ['name' => 'Kevin Malone', 'occupation' => 'Accountant']]
Arr::where()
Метод Arr::where фільтрує масив за допомогою заданого замикання:
use Illuminate\Support\Arr;
$array = [100, '200', 300, '400', 500];
$filtered = Arr::where($array, function (string|int $value, int $key) {
return is_string($value);
});
// [1 => '200', 3 => '400']
Arr::whereNotNull()
Метод Arr::whereNotNull видаляє з переданого масиву всі значення null:
use Illuminate\Support\Arr;
$array = [0, null];
$filtered = Arr::whereNotNull($array);
// [0 => 0]
Arr::wrap()
Метод Arr::wrap загортає передане значення в масив. Якщо значення вже є масивом, воно повертається без змін:
use Illuminate\Support\Arr;
$string = 'Laravel';
$array = Arr::wrap($string);
// ['Laravel']
Якщо передане значення дорівнює null, повернеться порожній масив:
use Illuminate\Support\Arr;
$array = Arr::wrap(null);
// []
data_fill()
Функція data_fill встановлює відсутнє значення всередині вкладеного масиву або обʼєкта за «крапковою» нотацією:
$data = ['products' => ['desk' => ['price' => 100]]];
data_fill($data, 'products.desk.price', 200);
// ['products' => ['desk' => ['price' => 100]]]
data_fill($data, 'products.desk.discount', 10);
// ['products' => ['desk' => ['price' => 100, 'discount' => 10]]]
Ця функція також приймає зірочки як шаблони підстановки і заповнює ціль відповідно:
$data = [
'products' => [
['name' => 'Desk 1', 'price' => 100],
['name' => 'Desk 2'],
],
];
data_fill($data, 'products.*.price', 200);
/*
[
'products' => [
['name' => 'Desk 1', 'price' => 100],
['name' => 'Desk 2', 'price' => 200],
],
]
*/
data_get()
Функція data_get дістає значення з вкладеного масиву або обʼєкта за «крапковою» нотацією:
$data = ['products' => ['desk' => ['price' => 100]]];
$price = data_get($data, 'products.desk.price');
// 100
Функція data_get також приймає значення за замовчуванням, яке повернеться, якщо вказаний ключ не знайдено:
$discount = data_get($data, 'products.desk.discount', 0);
// 0
Функція приймає й шаблони підстановки із зірочками, які можуть відповідати будь-якому ключу масиву чи обʼєкта:
$data = [
'product-one' => ['name' => 'Desk 1', 'price' => 100],
'product-two' => ['name' => 'Desk 2', 'price' => 150],
];
data_get($data, '*.name');
// ['Desk 1', 'Desk 2'];
Плейсхолдери {first} і {last} дають змогу дістати перший або останній елемент масиву:
$flight = [
'segments' => [
['from' => 'LHR', 'departure' => '9:00', 'to' => 'IST', 'arrival' => '15:00'],
['from' => 'IST', 'departure' => '16:00', 'to' => 'PKX', 'arrival' => '20:00'],
],
];
data_get($flight, 'segments.{first}.arrival');
// 15:00
data_set()
Функція data_set встановлює значення всередині вкладеного масиву або обʼєкта за «крапковою» нотацією:
$data = ['products' => ['desk' => ['price' => 100]]];
data_set($data, 'products.desk.price', 200);
// ['products' => ['desk' => ['price' => 200]]]
Ця функція також приймає шаблони підстановки із зірочками і встановлює значення в цілі відповідно:
$data = [
'products' => [
['name' => 'Desk 1', 'price' => 100],
['name' => 'Desk 2', 'price' => 150],
],
];
data_set($data, 'products.*.price', 200);
/*
[
'products' => [
['name' => 'Desk 1', 'price' => 200],
['name' => 'Desk 2', 'price' => 200],
],
]
*/
За замовчуванням наявні значення перезаписуються. Якщо потрібно встановити значення лише тоді, коли його ще немає, передайте false четвертим аргументом функції:
$data = ['products' => ['desk' => ['price' => 100]]];
data_set($data, 'products.desk.price', 200, overwrite: false);
// ['products' => ['desk' => ['price' => 100]]]
data_forget()
Функція data_forget видаляє значення всередині вкладеного масиву або обʼєкта за «крапковою» нотацією:
$data = ['products' => ['desk' => ['price' => 100]]];
data_forget($data, 'products.desk.price');
// ['products' => ['desk' => []]]
Ця функція також приймає шаблони підстановки із зірочками і видаляє значення в цілі відповідно:
$data = [
'products' => [
['name' => 'Desk 1', 'price' => 100],
['name' => 'Desk 2', 'price' => 150],
],
];
data_forget($data, 'products.*.price');
/*
[
'products' => [
['name' => 'Desk 1'],
['name' => 'Desk 2'],
],
]
*/
head()
Функція head повертає перший елемент переданого масиву. Якщо масив порожній, повернеться false:
$array = [100, 200, 300];
$first = head($array);
// 100
last()
Функція last повертає останній елемент переданого масиву. Якщо масив порожній, повернеться false:
$array = [100, 200, 300];
$last = last($array);
// 300
Числа
Number::abbreviate()
Метод Number::abbreviate повертає зручний для читання формат переданого числового значення зі скороченням одиниць:
use Illuminate\Support\Number;
$number = Number::abbreviate(1000);
// 1K
$number = Number::abbreviate(489939);
// 490K
$number = Number::abbreviate(1230000, precision: 2);
// 1.23M
Number::clamp()
Метод Number::clamp утримує задане число в межах вказаного діапазону. Якщо число менше за мінімум, повертається мінімальне значення. Якщо число більше за максимум, повертається максимальне:
use Illuminate\Support\Number;
$number = Number::clamp(105, min: 10, max: 100);
// 100
$number = Number::clamp(5, min: 10, max: 100);
// 10
$number = Number::clamp(10, min: 10, max: 100);
// 10
$number = Number::clamp(20, min: 10, max: 100);
// 20
Number::currency()
Метод Number::currency повертає валютне представлення переданого значення у вигляді рядка:
use Illuminate\Support\Number;
$currency = Number::currency(1000);
// $1,000.00
$currency = Number::currency(1000, in: 'EUR');
// €1,000.00
$currency = Number::currency(1000, in: 'EUR', locale: 'de');
// 1.000,00 €
$currency = Number::currency(1000, in: 'EUR', locale: 'de', precision: 0);
// 1.000 €
Number::defaultCurrency()
Метод Number::defaultCurrency повертає валюту за замовчуванням, яку використовує клас Number:
use Illuminate\Support\Number;
$currency = Number::defaultCurrency();
// USD
Number::defaultLocale()
Метод Number::defaultLocale повертає локаль за замовчуванням, яку використовує клас Number:
use Illuminate\Support\Number;
$locale = Number::defaultLocale();
// en
Number::fileSize()
Метод Number::fileSize повертає представлення розміру файлу для переданого значення в байтах у вигляді рядка:
use Illuminate\Support\Number;
$size = Number::fileSize(1024);
// 1 KB
$size = Number::fileSize(1024 * 1024);
// 1 MB
$size = Number::fileSize(1024, precision: 2);
// 1.00 KB
Number::forHumans()
Метод Number::forHumans повертає зручний для читання формат переданого числового значення:
use Illuminate\Support\Number;
$number = Number::forHumans(1000);
// 1 thousand
$number = Number::forHumans(489939);
// 490 thousand
$number = Number::forHumans(1230000, precision: 2);
// 1.23 million
Number::format()
Метод Number::format форматує передане число у рядок відповідно до локалі:
use Illuminate\Support\Number;
$number = Number::format(100000);
// 100,000
$number = Number::format(100000, precision: 2);
// 100,000.00
$number = Number::format(100000.123, maxPrecision: 2);
// 100,000.12
$number = Number::format(100000, locale: 'de');
// 100.000
Number::ordinal()
Метод Number::ordinal повертає порядкове представлення числа:
use Illuminate\Support\Number;
$number = Number::ordinal(1);
// 1st
$number = Number::ordinal(2);
// 2nd
$number = Number::ordinal(21);
// 21st
Number::pairs()
Метод Number::pairs генерує масив пар чисел (піддіапазонів) на основі вказаного діапазону і кроку. Це стає в пригоді, коли великий діапазон чисел треба розбити на менші, керовані піддіапазони, наприклад для пагінації чи пакетної обробки. Метод pairs повертає масив масивів, де кожен внутрішній масив представляє пару (піддіапазон) чисел:
use Illuminate\Support\Number;
$result = Number::pairs(25, 10);
// [[0, 9], [10, 19], [20, 25]]
$result = Number::pairs(25, 10, offset: 0);
// [[0, 10], [10, 20], [20, 25]]
Number::parse()
Метод Number::parse розбирає локалізований числовий рядок за допомогою PHP-класу NumberFormatter:
use Illuminate\Support\Number;
$result = Number::parse('10,123', locale: 'en');
// 10123.0
$result = Number::parse('10,123', locale: 'fr');
// 10.123
Number::parseInt()
Метод Number::parseInt розбирає рядок у ціле число відповідно до вказаної локалі:
use Illuminate\Support\Number;
$result = Number::parseInt('10.123');
// (int) 10
$result = Number::parseInt('10,123', locale: 'fr');
// (int) 10
Number::parseFloat()
Метод Number::parseFloat розбирає рядок у число з рухомою комою відповідно до вказаної локалі:
use Illuminate\Support\Number;
$result = Number::parseFloat('10');
// (float) 10.0
$result = Number::parseFloat('10', locale: 'fr');
// (float) 10.0
Number::percentage()
Метод Number::percentage повертає відсоткове представлення переданого значення у вигляді рядка:
use Illuminate\Support\Number;
$percentage = Number::percentage(10);
// 10%
$percentage = Number::percentage(10, precision: 2);
// 10.00%
$percentage = Number::percentage(10.123, maxPrecision: 2);
// 10.12%
$percentage = Number::percentage(10, precision: 2, locale: 'de');
// 10,00%
Number::spell()
Метод Number::spell перетворює передане число на рядок зі слів:
use Illuminate\Support\Number;
Неперекладеними лишилися підрозділи: Numbers (продовження Number::spell(), Number::spellOrdinal, Number::trim, Number::useLocale, Number::withLocale, Number::useCurrency, Number::withCurrency), Paths (app_path, base_path, config_path, database_path, lang_path, public_path, resource_path, storage_path), URLs (action, asset, route, secure_asset, secure_url, to_action, to_route, uri, url), Miscellaneous (abort … when) та Other Utilities (Benchmarking, Dates and Time, Deferred Functions, Lottery, Pipeline, Sleep, Timebox, URI).
Перекладаємо з офіційної документації, розділ за розділом, і не ховаємо недоперекладене. Помітили неточність у терміні чи реченні: напишіть, виправимо.