Помощники: строки, массивы, даты
Помимо больших возможностей в Laravel есть сотни маленьких функций для ежедневной работы: сделать адрес из заголовка, обрезать текст, достать значение из вложенного массива, показать «3 часа назад». Знать их полезно, чтобы не писать то же самое вручную.
Строки
use Illuminate\Support\Str;
Str::slug('Как выбрать чай'); // kak-vybrat-chai
Str::limit('Очень длинный заголовок', 12); // Очень длинны...
Str::title('война и мир'); // Война И Мир
Str::random(16); // случайная строка
Str::uuid(); // уникальный идентификатор
Str::contains('laravel.com', '.com'); // true
Str::plural('post'); // postsЦепочки
Функция str() возвращает объект, методы которого можно вызывать подряд:
$slug = str(' Новая статья: PHP 8.4 ')
->trim()
->lower()
->slug();
$initials = str('Анна Иванова')->explode(' ')->map(fn ($word) => mb_substr($word, 0, 1))->join('');Массивы
use Illuminate\Support\Arr;
$user = ['name' => 'Анна', 'address' => ['city' => 'Казань']];
Arr::get($user, 'address.city'); // Казань
Arr::get($user, 'address.street', '—'); // —
Arr::only($user, ['name']); // ['name' => 'Анна']
Arr::except($user, ['address']); // ['name' => 'Анна']
data_get($user, 'address.city'); // то же для массивов и объектовЗапись через точку избавляет от цепочек isset().
Даты
Даты в Laravel — объекты Carbon, расширение стандартного класса дат:
now(); // текущий момент
today(); // сегодня в 00:00
now()->addDays(3);
now()->subMonth()->startOfMonth();
now()->isWeekend();
$post->created_at->format('d.m.Y');
$post->created_at->diffForHumans(); // 3 часа назадСтолбцы created_at и updated_at модель превращает в Carbon сама. Язык фразы «3 часа назад» зависит от настройки APP_LOCALE.
Числа
use Illuminate\Support\Number;
Number::format(1234567.891, 2); // 1,234,567.89
Number::currency(1250, 'RUB', 'ru'); // 1 250,00 ₽
Number::percentage(12.5, 1); // 12.5%
Number::fileSize(5 * 1024 * 1024); // 5 MB
Number::abbreviate(1500000); // 2MАдреса
route('posts.show', $post); // адрес по имени маршрута
url('/about'); // полный адрес
asset('images/logo.png'); // адрес файла из папки publicКороткие обращения
| Функция | Что возвращает |
|---|---|
auth()->user() | Текущий пользователь |
request('page') | Значение из запроса |
session('key') | Значение из сессии |
config('app.name') | Настройка |
back() | Перенаправление на прошлую страницу |
collect([1, 2]) | Коллекция из массива |
blank($value), filled($value) | Пустое ли значение |
Отладка
dump($user); // показать значение и продолжить
dd($user, $posts); // показать и остановить программу
$posts = Post::where('published', true)->dd(); // показать запросЧастая ошибка
Вызовы dd() и dump(), забытые в коде, попадают на рабочий сайт и показывают посетителям внутренние данные — или обрывают страницу на середине. Перед каждой отправкой изменений ищите их по проекту; анализатор кода Larastan умеет находить такие вызовы сам.