当前位置: 首页 > 知识库问答 >
问题:

Laravel 5.4中的自定义助手类

章翔宇
2023-03-14

我在app/Helpers中有一些助手类。如何使用服务提供商加载这些类,以便在刀片式模板中使用它们?

例如。如果我有一个类CustomHelper,其中包含一个方法foBar()

<?php

nampespace App\Helpers;

class CustomHelper
{
    static function fooBar()
    {
        return 'it works!';
    }
}

我希望能够在我的刀片模板中做这样的事情:

{{ fooBar() }}

而不是这样做:

{{ \App\Helpers\CustomHelper::fooBar() }}

另外:@andrew brown在《Laravel 5定制助手最佳实践》中的回答涉及非类文件。最好有一个基于类的解决方案,这样可以在类之间组织助手函数


共有1个答案

羊舌富
2023-03-14

我认为,当类中有代码时,不可能只使用函数。嗯,你可以试着延长刀片,但太多了。

您应该做的是创建一个额外的文件,例如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\u add只是一种较短(或者可能不太详细)的编写方式Arr::add

 类似资料:
  • 我正在尝试在Laravel 5.6中创建一个自定义帮助器 我的助手路径是app\Helpers\ReadExcel。php 以下是我的助手文件: 我的助手的服务提供商如下 在: 我尝试在控制器方法中使用帮助器,如下所示: 我得到的错误如下: 找不到类“ReadExcel” 请帮我这个。我不确定错在哪里。

  • 我已经遵循了在PHP Laravel 5中创建自定义助手函数的最佳实践是什么? 这个问题的两个答案帮助我在laravel 5.1中创建自定义静态类。因为它是一个静态类。提前谢谢你。

  • 本文向大家介绍asp.net-core 自定义标签助手,包括了asp.net-core 自定义标签助手的使用技巧和注意事项,需要的朋友参考一下 示例 您可以通过实现ITagHelper便捷类或从便捷类派生来创建自己的标记帮助器TagHelper。 默认约定是将与帮助程序名称匹配的html标签作为目标,而不带可选的TagHelper后缀。例如WidgetTagHelper将目标<widget>代码定

  • 问题内容: 我想创建辅助函数,以避免在Laravel 5的视图之间重复代码: view.blade.php 它们基本上是文本格式化功能。我在哪里以及如何使用这些功能创建文件? 问题答案: 在您的应用文件夹中创建一个文件,并使用composer加载它: 将其添加到文件后,运行以下命令: 如果您不喜欢将文件保留在目录中(因为它不是PSR-4命名空间的类文件),则可以执行网站的操作:将文件存储在boot

  • 本文向大家介绍asp.net-mvc 自定义助手-渲染提交按钮,包括了asp.net-mvc 自定义助手-渲染提交按钮的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我正在尝试编写一个LWRP,其中基于条件它将从助手库调用方法。我在让提供者读取外部方法时遇到语法问题。 供应商很直接 以及helper库 但每当我尝试运行它时,不管设置了什么资源属性,我都会得到 我显然在写助手库的留档中遗漏了一些东西,但我不确定是什么。试着移动一些东西,但开始没有想法。