Lumen 5.4 Helper 类在全球范围内不可用

Posted

技术标签:

【中文标题】Lumen 5.4 Helper 类在全球范围内不可用【英文标题】:Lumen 5.4 Helper class not available globally 【发布时间】:2017-11-09 19:47:42 【问题描述】:

我已经在

中创建了Helper函数

流明\app\Helpers\Helpers.php

并添加

<?php
if(!function_exists('config_path'))

        /**
        * Return the path to config files
        * @param null $path
        * @return string
        */
        function config_path($path=null)
        
                return app()->getConfigurationPath(rtrim($path, ".php"));
        

在 compoer.json 中

,
    "files": [
        "app/Helpers/Helpers.php"
    ],

然后跑了

composer dump-autoload -o
composer dump-autoload 

之后如果尝试在 web.php 中调用

$app->get('/', function () use ($app) 


  echo config_path();


);

出现以下错误

致命错误:调用未定义的函数 config_path() D:\xampp\htdocs\lumen\routes\web.php 第 17 行

【问题讨论】:

【参考方案1】:

看起来web.phpHelpers.php 之前执行。您可以做的最好的事情是将任何逻辑放入控制器、模型等中,并将路由仅保留在 web.php 中。

如果你不关心这个,你可以在index.php 中创建require() helpers 文件,但同样,这是一个不好的做法。

【讨论】:

@Alexey.Ya 很糟糕,但我不知道为什么它不能在流明中工作。同样认为在 laravel 中工作正常 @Alexey.This helper 我用于 jwt 等 对于 laravel 本身,我认为它工作得很好,但对于 Lumen,我从来不需要因为一个小项目而有助手。如果 Lumen 有一个像 Laravel 这样的引导文件,需要你的助手在那里而不是在 public/index.php 中:/ @everytimeicob.ya 我已经添加到 bootstrap app.php 但 D:\xampp\htdocs\lumen>php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider" [Symfony \Component\Console\Exception\CommandNotFoundException] “供应商”命名空间中没有定义命令。不工作 @vision 这是另一个问题

以上是关于Lumen 5.4 Helper 类在全球范围内不可用的主要内容,如果未能解决你的问题,请参考以下文章

lumen可以使用laravel-ide-helper

Lumen 5.4 与 Laravel 可邮寄

在 Lumen 5.4 中注销后 JWT Auth 令牌不会失效

Bcrypt 在 Lumen 5.4 中不起作用:调用未定义的函数 bcrypt()

EF RemoveRange 在事务范围内不起作用

Laravel 和 Lumen ACL 与共享代码库