Глобальные помощники Laravel
Часто вы будете нуждаться в служебной функции, доступ к которой будет осуществляться глобально во всем приложении. Заимствуя то, как laravel пишет своих помощников по умолчанию, вы можете расширить возможности своими пользовательскими функциями.
Создайте вспомогательный файл, а не класс
Я предпочитаю вам файл, а не класс, поскольку я не хочу возиться с пространствами имен и хочу, чтобы его функции были доступны без префиксов классов, таких как: greeting('Brian');
вместо Helper::greeting('Brian');
, как это делает Laravel со своими помощниками.
Файл: app/Support/helper.php
Зарегистрируйте вспомогательный файл в Composer: composer.json
{
...
"autoload": {
"classmap": [
"database"
],
"files": [
"app/Support/helpers.php"
],
"psr-4": {
"App\\": "app/"
}
},
...
}
Создайте свою первую вспомогательную функцию
<?php
if (!function_exists('greet')) {
/**
* Greeting a person
*
* @param string $person Name
* @return string
*/
function greet($person)
{
return 'Hello ' . $person;
}
}
Использование:
Не забудьте автозагрузить файл, прежде чем пытаться получить доступ к его функциям: composer dump-autoload
Давайте протестируем с Tinker
$ php artisan tinker
Psy Shell v0.8.17 (PHP 7.0.6 ΓÇö cli) by Justin Hileman
>>> greet('Brian');
=> "Hello Brian"
>>> exit
Exit: Goodbye.
С Blade
<p>{{ greet('Brian') }}</p>
Расширенное использование в качестве директивы Blade:
Иногда вы захотите использовать директиву blade вместо простой функции. Зарегистрируйте директиву Blade в методе загрузки AppServiceProvider: app/Providers/AppServiceProvider.php
public function boot()
{
// ...
Blade::directive('greet', function ($expression) {
return "<?php echo greet({$expression}); ?>";
});
}
Использование: <p>@greet('Brian')</p>
Примечание. вам может потребоваться очистить просмотры кеша php artisan view:clear
person
bmatovu
schedule
29.03.2018