1

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

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

文件夹结构

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

use lib;
class Collection {

public $decorator;

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

2 回答 2

5

我改用了 psr-4,然后我的类可以完美加载。

这是我的composer.json。

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

文件夹结构是

-->应用

-->模型

 -->Product.php
于 2016-06-29T06:23:58.620 回答
3

你应该这样做:

use lib\Decorator;

如果你希望能够new Decorator();在你的代码中做。

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

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

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

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

或者

"psr-0": {
    "lib": ""
}
于 2014-10-15T19:30:55.853 回答