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

Namespacing not working, using composer psr-4

我正在使用 slim 框架、composer 和 psr-4 自动加载。

这是作曲家:

"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){

我得到:Class 'Trap' 未找到

我做错了什么?

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

Class 'Trap' not found

但是这个

Class 'Shorty\Models\Trap' not found

没有提及完全限定的 class 名称(包括它的命名空间)告诉我您缺少 class 的代码既没有 namespace 语句,也没有使用 use,导入这个 "Trap" class.

或者更准确地说:

这段代码会报错 "Trap" class.

Trap::leftJoin();

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

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

还有这个:

use Shorty\Models\Trap;

Trap::leftJoin();

或者这个:

namespace Shorty\Models;

Trap::leftJoin();

当 PHP 抱怨 class 不存在时,它总是显示完全评估的最终名称 class,在别名、相对名称空间间接寻址和其他内容之后。