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.
带刀片
<p>{{ greet('Brian') }}</p>
作为 Blade 指令的高级用法:
有时您会发现自己想要使用刀片指令而不是普通函数。
在 AppServiceProvider 的 boot 方法中注册你的 Blade 指令: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