Было бы полезно, если бы вы могли определить определенное действие, которое должно выполняться каждый раз, когда ваши шаблоны Blade встречают объекты определенного класса?
Например, при работе с библиотеками, такими как Carbon, часто бывает так, что вы хотите отформатировать их определенным образом во всем своем приложении.
Обычно, если вы хотите получить дату в определенном формате для экземпляра Carbon, вы можете сделать это в шаблонах Blade следующим образом. Это нормально. Но, как вы можете догадаться, вы найдете себя повторяющим то же самое в других местах своего приложения. Тогда как все, что вам нужно, — это отформатировать его во всех местах, где экземпляр Carbon находится в шаблонах Blade.
Этот PR для Laravel 8.x пытается решить эту же проблему. Как оказалось, этот PR вводит новый метод Blade::stringable(), который можно разместить в методе boot провайдера служб и позволяет пользователю добавлять перехватывающие замыкания для любого класса. Возвращаемое значение будет выведено в Blade.
Итак, если мы хотим, чтобы каждый объект Carbon, найденный в шаблонах Blade, был отформатирован определенным образом, мы можем определить его в методе boot App\Providers\AppServiceProvider. Как только это сделано, вам не нужно форматировать даты, основанные на Carbon, в своем приложении вручную. Указанный формат в Blade::stringable будет применяться к каждой доступной дате Carbon в вашем приложении.
Довольно удобно, не так ли?
Вы можете применять это к любому классу/библиотеке, где вы хотите иметь некоторое единство во всем своем приложении.
>>Click here to continue<<
