byt*_*ker 14 php laravel composer-php laravel-5 laravel-5.4
我有一些辅助课程app/Helpers.如何使用a加载这些类service provider以在刀片模板中使用它们?
例如,如果我有一个CustomHelper包含方法的类fooBar():
<?php
nampespace App\Helpers;
class CustomHelper
{
static function fooBar()
{
return 'it works!';
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在我的刀片模板中执行以下操作:
{{ fooBar() }}
Run Code Online (Sandbox Code Playgroud)
而不是这样做:
{{ \App\Helpers\CustomHelper::fooBar() }}
Run Code Online (Sandbox Code Playgroud)
PS: @安德鲁-布朗的回答中的最佳做法上Laravel 5个自定义的助手与非类文件的交易.拥有一个基于类的解决方案会很好,这样可以在类之间组织辅助函数.
Mar*_*łek 32
我不认为只有在类中有代码时才能使用函数.好吧,你可以尝试扩展Blade,但它太多了.
你应该做的是创建一个额外的文件,例如app\Helpers\helpers.php在你的composer.json文件中:
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
},
"files": ["app/Helpers/helpers.php"] // <- this line was added
},
Run Code Online (Sandbox Code Playgroud)
创建app/Helpers/helpers.php文件并运行
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
现在在您的app/Helpers/helpers.php文件中,您可以添加这些自定义函数,例如:
if (! function_exists('fooBar')) {
function fooBar()
{
return \App\Helpers\CustomHelper::fooBar();
}
}
Run Code Online (Sandbox Code Playgroud)
所以你定义了全局函数,但事实上它们都可能使用某些类的特定公共方法.
顺便说一句,这正是Laravel为自己的助手所做的事情,例如:
if (! function_exists('array_add')) {
function array_add($array, $key, $value)
{
return Arr::add($array, $key, $value);
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到array_add的只是更短(或者更简洁)的写作方式Arr::add
| 归档时间: |
|
| 查看次数: |
12480 次 |
| 最近记录: |