好的,我的Laravel应用程序中有一个项目文件夹。名为TLGD(如果我的网站名称)。在里面我创建了一个表单验证帮助器,用于从控制器中删除不必要的代码。
这是文件夹结构:
TGLD\Validation\Forms
在这里我有我的表单助手类
现在在控制器中只是为了测试它我通过使用php中的方法调用类,如下所示:
use TGLD\Validation\Forms\Login;
login是登录验证的类
现在效果很好,所以我尝试自动加载TGLD文件夹,所以我不需要在每个控制器中添加使用行。这是我的composer.json文件
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
],
"psr-4": {
"TGLD\\": "app/TGLD"
}
},
但是当我自动加载它时,它给我一个错误,我的登录类不存在,这意味着自动加载器不工作。是否存在语法错误或我遗漏了什么?我跑了
composer dump-autoload -o
以及任何建议都有用,谢谢你提前
答案 0 :(得分:0)
你想做的事情无法完成。
您必须在某处使用完整的命名空间来标识要使用的类。你有几个选择来做这个
new \TGLD\Validation\Forms\Login()
。 use
子句将指定的类导入此文件的当前命名空间use TGLD\Validation\Forms\Login; ... new Login();
use
中的部分命名空间,并使用类名中的其余部分:use TGLD\Validation\Forms; ... new Forms\Login();
在以某种方式选择类名后,PHP知道它需要哪个类,然后如果PHP仍然不知道该类,则触发自动加载。
因此,您无法通过自动加载影响类的命名。