2016-07-23 72 views
2

我在laravel的命名空间中挣扎。在做完laravel之后,我有一个标准的文件夹结构。我添加了一个名为数据访问的应用程序文件夹中的文件夹,所以我把我所有的数据访问类中,以便其具有以下结构:Laravel 5.2命名空间

PROJECTDIR>应用程序>数据访问> dataaccessclasses(文件)

和我所有的数据访问类有每个班级顶部的名称空间App(我只是为了简单起见而这么做)。现在,在我的控制器我补充这个要顶,所以我可以用我的数据访问类:

<?php use App; ?> 

但Laravel告诉我,它无法找到我的数据访问类,并试图解决它相对于控制器的命名空间。下面是它吐在我的错误:

ReflectionException在Container.php行794:类 应用程序\ HTTP \ \控制器StockDataAccess不存在。

任何人都可以说明这一切意味着什么?

回答

1

app文件夹默认如下PSR-4自动加载的规范

所以,在你app文件夹的子文件夹中声明的类时,你不应该使用App命名空间,但是相对于特定的子文件夹的路径的命名空间。

例如,对于这个类:

app > dataaccess > dataaccessclasses > StockDataAccess.php 

你应该使用:

namespace App\dataaccess\dataaccessclasses\StockDataAccess; 

在你的类定义文件。要使用这个类在控制器中,你应该使用:

use App\dataaccess\dataaccessclasses\StockDataAccess; 
+0

尝试这样做,就像你说的它仍然会以相同的错误结束。我正在阅读关于psr-4的内容,了解这一切意味着什么,但可悲的是,她不工作 –

+0

@Eagletrophy:它给你同样的错误?如果你在你的控制器中使用'使用App \ dataaccess \ dataaccessclasses \ StockDataAccess;',至少它应该在那个目录中寻找类,给你另一个错误。对于PSR-4,以app文件夹内的现有Laravel类(例如http/middleware ecc)为例:您会看到每个类的名称空间总是依赖于类文件路径 – Moppo

+0

我检查了什么我反对你刚刚解释的,我仍然得到同样的东西。这真是令人沮丧,因为即使在使用php-fig浏览PSR-4文档之后,我仍然没有看到我的错误在哪里。我只会在我的控制器中写入我的数据访问代码,忘记这样做。但是,这感觉就像一个laravel bug,我不能正确解析窗口或路径中的路径。无论如何感谢您的帮助moppo –

0

您需要使用“应用程序\的DataAccess \ dataaccessclasses”更新composer.json 的类映射和运行作曲家转储