命名空间不起作用,使用composer psr-4

时间:2015-07-04 21:30:50

标签: php composer-php psr-4

我正在使用slim framework,composer和psr-4 autoload。

这是作曲家:

"Shorty\\":"app/Shorty"

注意:我也使用"Shorty\\":"app/Shorty/Models"

尝试了上述操作

导演结构:app/Shorty/Models/Trap.php

内部Trap.php

namespace Shorty\Models;

use Illuminate\Database\Eloquent\Model as Eloquent;

    class Trap{
    #code here
    }

在我的路线中:

$users=Trap::leftJoin('users', function($join){

我得到:未找到“陷阱”类

我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果类名称是正确的,您将不会收到此错误消息:

Class 'Trap' not found

但是这个

Class 'Shorty\Models\Trap' not found

不提及包含它的命名空间的完全限定类名称告诉我,您缺少该类的代码既没有namespace语句,也没有导入use,导入这个" Trap"类。

或者更确切地说:

此代码会抱怨丢失了#34; Trap"类。

Trap::leftJoin();

此代码会抱怨缺少" Shorty \ Models \ Trap"类。

\Shorty\Models\Trap::leftJoin();

以及这一个:

use Shorty\Models\Trap;

Trap::leftJoin();

或者这个:

namespace Shorty\Models;

Trap::leftJoin();

当PHP抱怨某个类不存在时,它总是在别名,相对命名空间间接和东西之后显示该类的完全评估的最终名称。