在composer.json中使用PSR-0不会加载我的类

时间:2014-10-15 06:11:27

标签: composer-php autoload psr-0

composer.json我有以下数据:

{
    "require": {
        "slim/slim": "2.*",
    },
    "autoload": {
        "psr-0": {
            "lib": "lib/"
        }
    }
}

lib文件夹位于vendor文件夹旁边。在lib里面,我有一个名为Decorator.php的班级,我的班级名称是Decorator,如下所示:

namespace lib;
class Decorator
{
    public function OutputDecorate()
    {
        return true;
    }

}

我运行php compooser.phar update并收到消息Nothing to install or update blah blah blah

为了更好地理解,这是项目文件夹结构的一部分:

folder structure

现在,当我想要实例化我的课程时,我无法访问我的课程。

use lib;
class Collection {

public $decorator;

public function __construct() {
    $this->decorator = new Decorator();
}

2 个答案:

答案 0 :(得分:5)

我使用的是psr-4,然后我的课程完全加载了。

这是我的composer.json。

{
  "autoload": {
    "psr-4": {
              "ComposerTest\\Models\\": "App/Models",
             },
  }
}

文件夹结构是

- >应用

- >模型

 -->Product.php

答案 1 :(得分:3)

你应该这样做:

use lib\Decorator;

如果您希望能够在代码中执行new Decorator();

PHP use语句只包含一个类,它不会导入整个名称空间。

您是一名正在恢复的Java程序员吗?

对于PSR-0,composer.json中的类声明需要指向包含目录而不是顶级命名空间。例如我认为应该是:

"psr-0": {
    "lib": "./"
}

"psr-0": {
    "lib": ""
}