"Custom helper classes in Laravel 5.4"意为"Laravel 5.4中的自定义帮助类"。
"Custom helper classes in Laravel 5.4"意为"Laravel 5.4中的自定义帮助类"。
这个问题已经有了答案:如何在Laravel中创建自定义助手函数
我有一些位于app/Helpers
目录下的助手类。我该如何使用服务提供者
加载这些类以在blade模板中使用它们?
比如,如果我有一个包含方法fooBar()
的类CustomHelper
:
<?php nampespace App\Helpers; class CustomHelper { static function fooBar() { return 'it works!'; } }
我想在我的blade模板中做这样的事情:
{{ fooBar() }}
而不是这样:
{{ \App\Helpers\CustomHelper::fooBar() }}
P.S: @andrew-brown的答案在Laravel 5中自定义助手的最佳实践中处理的是非类文件。很不错的是有一个基于类的解决方案,这样助手函数可以在类之间进行组织。
admin 更改状态以发布 2023年5月20日
我觉得在类中含有代码时只使用函数可能是不可能的。好吧,你可以试着扩展Blade,但那太复杂了。
你应该创建一个额外的文件,例如app\Helpers\helpers.php
,并在你的composer.json文件中添加:
"autoload": { "classmap": [ "database" ], "psr-4": { "App\\": "app/" }, "files": ["app/Helpers/helpers.php"] // <- this line was added },
创建app/Helpers/helpers.php
文件并运行
composer dump-autoload
现在在你的app/Helpers/helpers.php
文件中你可以像这样添加那些自定义函数:
if (! function_exists('fooBar')) { function fooBar() { return \App\Helpers\CustomHelper::fooBar(); } }
因此,你定义全局函数,但实际上它们中的所有函数可能都使用某些类的特定公共方法。
顺便说一句,这恰好是Laravel自己的帮助程序所做的事情,例如:
if (! function_exists('array_add')) { function array_add($array, $key, $value) { return Arr::add($array, $key, $value); } }
你可以看到array_add
只是在写Arr::add
的时候更短(或者更简洁)的一种方法。