2016-12-26 126 views
1

使用作曲家的自動加載應用程序的情況之下觸發自動裝卸作曲家不自動加載文件外人廠商

​​

而應用程序作爲參數實例化不會觸發自動加載器加載這個類。要注意下面的代碼加載服務器類,但不加載應用程序類。

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

的應用類位於供應商之外,這是我在composer.json指定它

{ 
    "autoload": { 
    "psr-4": { 
     "App\\": "src" 
    } 
    } 
} 

,我使用的是命名空間,如下

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

那你的命名空間? – meda

+0

@meda我有他們我會把這個問題包括進來,以便你可以看到。 –

+0

你有沒有遇到任何錯誤 – meda

回答

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 
+0

我曾嘗試過,它的工作原理,但我不明白爲什麼in參數類實例化不起作用。這其實是我提出這個問題的原因,因爲它讓我感到非常困惑。 –

+0

@ m..I擴展我的帖子,如果你找到原因讓我知道這很有趣 – meda

+0

會做感謝的人。 –