Composer - 自动加载后找不到类

时间:2015-05-12 14:32:47

标签: php composer-php

我的班级结构如下:

click event

我已经通过自动加载创建了composer.json:

myproject
    |
    -------src (namespace PicoCore;)
            |
            -----objects (namespace PicoCore\Objects;)
            -----tests (namespace PicoCore\Tests;)

我在安装后创建了一个测试脚本:

{
    "autoload": {
        "psr-0": {
            "PicoCore": "src",
            "PicoCore\\Objects" : "src/objects",
            "PicoCore\\Tests" : "src/tests"
        }
    }
}

用户类:

<?php

require_once "../../vendor/autoload.php";

use PicoCore\Objects\User;

$user = new User();
$user->name = "asaf";
echo $user->name;

?>

我找不到类异常..有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果它是没有课程的命名空间,那么它必须以\\结尾 所以:

"autoload": {
    "psr-0": {
        "PicoCore\\": "src",
        "PicoCore\\Objects\\" : "src/objects",
        "PicoCore\\Tests\\" : "src/tests"
    }
}

并检查文件自动加载

  

作曲/ autoload_namespaces.php

请参阅https://getcomposer.org/doc/04-schema.md#psr-0

答案 1 :(得分:0)

使用PSR-0

要使用PSR-0,您需要将结构布局更改为:

src/
└── PicoCore
    ├── Objects
    │   └── User.php
    └── Tests

在您的composer.json中,您需要添加PicoCore命名空间:

"psr-0": {
    "PicoCore\\": "src"
}

替代PSR-4

如果要保留当前的文件系统布局,可以使用PSR-4而不是PSR-0。要使用PSR-4,您需要更新composer.json:

"autoload": {
    "psr-4": {
        "PicoCore\\": "src",
        "PicoCore\\Objects\\" : "src/objects",
        "PicoCore\\Tests\\" : "src/tests"
    }
}

完成更改后,运行composer dumpautoload以重新生成自动加载文件。