2016-12-26 13 views
1

を自動ロードではないアプリケーションの以下のインスタンスは、オートローダ作曲作曲家のオートローダーを使用して、ファイル部外ベンダー

​​

をトリガします。以下のコードに注意すると、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

何あなたの名前空間については何ですか? – 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

ありがとうございます。 –

関連する問題