自动加载帮助文件夹 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的主要内容,如果未能解决你的问题,请参考以下文章