Laravel在引用自定义类时的奇怪行为

时间:2017-07-11 12:07:20

标签: php laravel laravel-5.4

好吧,所以Laravel对我来说在过去的几天里表现得很奇怪。

我正在开发Laravel Package并具有以下目录结构:

vendor
-student
--myPackage
---src
----controllers
----models
----mail
----routes
----views

我的一个模型文件示例:

<?php

namespace Student\myPackage\Model;

use Illuminate\Database\Eloquent\Model as BaseModel;

class MyClass extends BaseModel
{
    //
}

我正在尝试访问控制器中的模型文件,例如use Student\myPackage\Model\MyClass as aMyClass。我在models目录中有几个模型,每个模型都在同一名称空间下,即Student\myPackage\Model

问题是我在访问路线时遇到以下错误。

  

FatalThrowableError

     

未找到类'Student \ myPackage \ Model \ MyClass'

我只在一个模型类上出现此错误,并且在控制器中引用它时,如果我在路径文件中引用它,如下所示,则没有问题。

use Student\myPackage\Model\MyClass as aMyClass

Route::get('/test', function() {
    $g = new aMyClass; ($g);
})->middleware('web');

我甚至擦掉模型文件,然后重新编码所有内容,但问题仍然存在。然后在我的控制器中,我为所有正在使用的模型类重新编写了use语句,并且它工作正常。记得我甚至多次重写了该课程的使用陈述,但它只是没有用。无论如何,所以现在它正在工作,但现在我和另一个类,一个可邮寄的类有同样的问题。

可能是什么问题,是关于引用类的顺序还是关于我缺少的命名空间的内容?

包的Composer.json

"autoload": {
    "psr-0": {
        "Student\\myPackage\\": "src/"
    }
}

2 个答案:

答案 0 :(得分:0)

您忘了复制模型命名空间。

尝试使用此use声明:

use Student\myPackage\Models\MyClass as aMyClass;

您的模型位于src/models,作曲家会将模型命名为Student\myPackage\Models

答案 1 :(得分:0)

您的命名空间不正确

Student\myPackage\Model\MyClass

将其更改为

Student\myPackage\Models\MyClass

检查完毕后,注册您的服务提供商(如果有,则为别名)。使用别名可以帮助您节省时间和精力。