Laravel 5故障自动加载类 - 未找到类错误

时间:2015-11-02 19:55:02

标签: laravel-5.1

我正在尝试自动加载我的课程。我使用文件Foo.php和文件Bar.php创建了一个文件夹app / Classes。

在composer.json中,我有引用的文件夹

"autoload": {
    "classmap": [
        "database",
        "app/Classes/"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": ["app/Library/myFunctions.php"]
},

按照

进行操作
composer dump-autoload

已验证vandor / autoload / autoload_classmap.php同时具有

'Bar' => $baseDir . '/app/Classes/Bar.php',
'Foo' => $baseDir . '/app/Classes/Foo.php',

我在每个类中放了一个简单的函数,如:

<?php 
    class Bar {
        public function __construct(){
            echo 'Bar';
        }
    }
?>

然后我尝试引用它

new Bar;

并收到错误

FatalErrorException in LoginController.php line 24:
Class 'App\Http\Controllers\Login\Bar' not found

现在......解决我提出的错误

new \Bar;

我们很好。

我的代码中是否有某些原因需要'\'。我在文档中找不到这个修复程序,我只是在laracasts中注意到它并且在挫折中添加它,并且它有效。

1 个答案:

答案 0 :(得分:0)

这是一个命名空间问题。看起来将"app/Classes/"设置为类映射会将其中的类设置为根命名空间中的类。所以Foo和Bar都在根。您的控制器似乎位于此命名空间中:App\Http\Controllers\Login。除非另外将特定的类名称视为相对于当前命名空间,因此只使用Foo使其查找类App\Http\Controllers\Login\Foo。,其中在前面放置斜杠使其保持相对并直接到根(想想)文件夹或网址)。

如果你想要它更整洁,你可以将use Foo;放在命名空间行下方的顶部,如果有的话,可以放在其他任何地方。