Php Laravel 5.2名称空间

Php Laravel 5.2名称空间,php,laravel,laravel-5,namespaces,Php,Laravel,Laravel 5,Namespaces,我在拉雷维尔与名称空间抗争。我有一个标准的文件夹结构,为一个项目后,做了laravel新。我在app文件夹中添加了一个名为dataaccess的文件夹,因此我将所有数据访问类放入其中,使其具有以下结构: projectdir>app>dataaccess>DataAccessClass(文件) 我所有的dataaccess类在每个类的顶部都有一个名称空间应用程序(我这样做只是为了让事情变得简单)。现在在我的控制器中,我将其添加到顶部,以便使用我的dataaccess类: <?php use

我在拉雷维尔与名称空间抗争。我有一个标准的文件夹结构,为一个项目后,做了laravel新。我在app文件夹中添加了一个名为dataaccess的文件夹,因此我将所有数据访问类放入其中,使其具有以下结构:

projectdir>app>dataaccess>DataAccessClass(文件)

我所有的dataaccess类在每个类的顶部都有一个名称空间应用程序(我这样做只是为了让事情变得简单)。现在在我的控制器中,我将其添加到顶部,以便使用我的dataaccess类:

<?php use App; ?>

但是Laravel告诉我,它无法定位我的dataaccess类,并尝试相对于控制器的名称空间来解析它。这是它向我吐出的错误:

Container.php行794:Class中的ReflectionException App\Http\Controllers\StockDataAccess不存在


任何人都能解释这一切意味着什么吗?

默认情况下,
app
文件夹遵循自动加载规范

因此,在
app
文件夹的子文件夹中声明类时,不应使用
app
命名空间,而应使用相对于特定子文件夹路径的命名空间

例如,对于此类中的:

app > dataaccess > dataaccessclasses > StockDataAccess.php 
你应使用:

namespace App\dataaccess\dataaccessclasses\StockDataAccess; 
use App\dataaccess\dataaccessclasses\StockDataAccess; 
在类定义文件中。要在控制器中使用该类,应使用:

namespace App\dataaccess\dataaccessclasses\StockDataAccess; 
use App\dataaccess\dataaccessclasses\StockDataAccess; 

您需要更新composer.json中的类映射
使用“app\dataaccess\dataaccessclasses”和run composer dump

尝试了与您所说的相同的方法,但结果仍然是相同的错误。我阅读psr-4是为了理解这一切意味着什么,但遗憾的是,她不是working@Eagletrophy:它会给你同样的错误吗?如果使用
则使用App\dataaccess\dataaccessclasses\StockDataAccess
在控制器中,至少它应该在该目录中查找类,这会给您带来另一个错误。对于PSR-4,以app文件夹中现有的Laravel类(即http/中间件ecc)为例:您将看到每个类的名称空间始终取决于类文件路径。我根据您刚才解释的内容检查了我所拥有的内容,我仍然得到了相同的结果。这真的很令人沮丧,因为即使在使用PHPFIG阅读了PSR-4文档之后,我仍然不知道我的错误在哪里。我将只在控制器中编写数据访问代码,而忘记这样做。但这对我来说就像一个laravel bug,无法正确解析windows或其他程序中的路径。无论如何,谢谢你的帮助moppo@Eagletrophy:尝试发布类和控制器代码以及类的完整路径