使用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;
答案 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