【问题标题】:How to create custom helper file in laravel 5.6?如何在 laravel 5.6 中创建自定义帮助文件?
【发布时间】:2018-09-04 12:36:26
【问题描述】:

当我使用 composer 创建自动加载帮助文件时,出现以下错误:

致命错误:composerRequireebefe31fc60fbe2897fba8c156ec310c():失败 需要打开 'D:\xampp\htdocs\common_module\vendor\composer/../../app/Http/helpers.php' (include_path='D:\xampp\php\PEAR') 在 D:\xampp\htdocs\common_module\vendor\composer\autoload_real.php 第 66 行

【问题讨论】:

  • 您可以发布您的composer.json 文件吗?你的helpers.php 文件在哪里?

标签: laravel composer-php helper autoload


【解决方案1】:

如果你是 Laravel 或 PHP 的新手,让我们来看看你如何创建自己的帮助函数,这些函数会自动被 Laravel 加载。

在 Laravel 应用中创建 Helpers 文件

您可以根据需要组织帮助文件的位置,但是,这里有一些建议的位置:

  • app/helpers.php
  • app/Http/helpers.php

我更喜欢将我的放在 app/helpers.php 中的应用程序命名空间的根目录中。

自动加载

无法自动加载 PHP 函数。但是,我们通过 Composer 提供了比使用 require 或 require_once 更好的解决方案。

因此 composer 有一个 files 键(它是一个文件路径数组),您可以在 autoload 中定义它:

"autoload": {
    "files": [
        "app/helpers.php"
    ],
         "classmap": [
         "database/seeds",
         "database/factories"
    ],
    "psr-4": {
         "App\\": "app/"
     }
},

向文件数组添加新路径后,您需要转储自动加载器:

 composer dump-autoload

(修改composer.json后使用此命令。)

现在在每次请求时都会自动加载 helpers.php 文件,因为 Laravel 在 public/index.php 中需要 Composer 的自动加载器:

require __DIR__.'/../vendor/autoload.php';

定义函数

在你的助手类中定义函数是很容易的部分,尽管有一些注意事项。所有 Laravel 帮助文件都包含在检查中以避免函数定义冲突:

if (! function_exists('env')) {
    function env($key, $default = null) {
        // ...
    }
}

我更喜欢在我的应用程序助手中使用 function_exists 检查,但如果您在应用程序的上下文中定义助手,则可以放弃 function_exists 检查。

【讨论】:

    【解决方案2】:

    在旧版本的 Laravel 中,我执行以下操作:

    1. app 文件夹创建一个 Helpers 文件夹
    2. 创建类YourHelper类文件
    3. 在该类文件中将命名空间设置为 App\Helpers
    4. 为类文件命名
    5. 在 config/app.php 中的别名中创建一个别名(这样您也可以在视图中调用帮助程序)'YourHelper'=>'App\Helpers\YourHelper::class'

    【讨论】:

    • 完美!正是我需要的!谢谢!
    【解决方案3】:

    以下是在 Laravel 5.5 中创建自定义助手的步骤

    步骤:1 创建 app/helpers.php 文件

    首先,在 app/helpers.php 路径中创建一个帮助类文件,在这个文件中,我们将任何自定义帮助类逻辑写入函数中。

    步骤:2 在 composer.json 文件中添加 app/helpers.php 文件

    现在,我们在 composer.json 文件中添加我们的 app/helpers.php 文件作为自动加载部分。

    "autoload": {
        "classmap": [
    
             ...
    
         ],
    
        "psr-4": {
    
             "App\\": "app/"
    
        },
    
        "files": [
    
             "app/helpers.php" //Add This Line
    
        ]
    },
    

    完成此操作后,一旦我们运行以下命令。

    作曲家转储自动加载

    更多请访问以下链接

    访问How To Create Custom Helper In Laravel 5.5

    希望对你有帮助……

    【讨论】:

    • 很高兴听到这个消息:)
    猜你喜欢
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2019-12-21
    • 2015-04-02
    • 1970-01-01
    • 2019-01-13
    • 2015-02-01
    • 1970-01-01
    相关资源
    最近更新 更多