"Custom helper classes in Laravel 5.4"意为"Laravel 5.4中的自定义帮助类"。

23 浏览
0 Comments

"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日
0
0 Comments

我觉得在类中含有代码时只使用函数可能是不可能的。好吧,你可以试着扩展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的时候更短(或者更简洁)的一种方法。

0