Composer不自动加载文件局外人供应商

时间:2016-12-26 05:01:52

标签: php composer-php

使用composer的自动加载器,下面的应用程序实例会触发自动加载器

$app = new Application();

虽然Application作为参数的实例化不会触发自动加载器加载该类。要注意以下代码加载Server类,而不是Application类。

$server = new Server(new Application(dirname(__DIR__) . '/config'));

Application类位于供应商之外,这就是我在composer.json

中指定它的方式
{
  "autoload": {
    "psr-4": {
      "App\\": "src"
    }
  }
}

我使用的命名空间如下所示

use App\Application;
use Stin\Http\Server;

1 个答案:

答案 0 :(得分:1)

尝试这种方式:

$app = new Application(dirname(__DIR__) . '/config');
$server = new Server($app);

我无法解释为什么嵌套的新对象不起作用,它似乎与内存有关,或者可能是php限制。

但我可以告诉你它不是关于自动加载,这是证据

class a {

}


class b {
 public function __construct($yo)
 {
     echo $yo;
 }
}

new a(new b('hello')); //does not work

$b = new b('yo');
new a($b);//work