自动加载帮助文件夹 Laravel 5

Posted

技术标签:

【中文标题】自动加载帮助文件夹 Laravel 5【英文标题】:Autoload Helper folder Laravel 5 【发布时间】:2015-09-26 16:10:00 【问题描述】:

我想在助手文件夹中调用静态方法。

我尝试了很多 tuto,但总是只针对一个文件。

我的配置 /app/Helpers/Languages.php -> 我的静态类

composer.json

"autoload": 
    "classmap": [
        "database",
        "app/Helpers/" <- I understand, L5 add in own autoload

app.php

'aliases' => [ ...., 'Languages'      => 'App\Helpers\Languages',

我尝试了什么:

添加自动加载类映射、HelpersServiceProviders 类、命名空间(仅在刀片模板中工作,而不是在控制器中) 添加带和不带类映射、命名空间的自动加载 psr-4

对于所有方法,我需要使用 'app/Helpers/Languages' 但我想只调用 Languages::myFunction() 而不使用 'use' 。可能吗 ?

我已经是 psr-4 中的 'app/' 文件夹,所以它将是加载文件夹和我的文件,不是吗?

如果在没有我的情况下加载页面时它可以提供帮助:

未找到 FatalErrorException 类“App\Http\Controllers\Languages”

当我更新 composer.json 时,我没有忘记 composer dump-autoload

【问题讨论】:

在您的Languages.php 顶部namespace App\Helpers; 和控制器顶部use App\Helpers\Languages;。您需要composer dumpautoload 一次。 【参考方案1】:

我认为您遇到的问题不是因为该类没有被自动加载,而是因为您尝试以错误的方式使用它。即使使用您添加的别名,当使用 命名空间内 中的类时(如 App\Http\Controllers),您也必须添加导入语句:

use App\Helpers\Languages;
// or with the alias
use Languages;

或者使用时指定FQN:

\App\Helpers\Languages::myFunction();
// or with the alias
\Languages::myFunction();

你无法避免这种情况。你可以做什么,所以你不必担心命名空间:使用没有类的辅助函数。就像 Laravel 的辅助函数一样。 (route()、'trans()' 等)

【讨论】:

啊,谢谢,我不认为别名声明仅适用于使用声明。没有使用声明就无法调用辅助类....非常感谢您的解释。

以上是关于自动加载帮助文件夹 Laravel 5的主要内容,如果未能解决你的问题,请参考以下文章

作曲家自动加载 Laravel 5.5

Laravel 5:如何将播种器类添加到自动加载?

自动加载中的 Laravel 5.1 Composer.json 调用文件

如何在 Laravel 5.1 中自动加载自定义类?

php #laravel中的自动加载帮助程序

Laravel 供应商自动加载不起作用