symfony2.1のautoloaderって
Symfony2の勉強だてら、サンプルを動かしてみることにしました。
サンプルはsymfony2.0で作られています。でも、私の環境はsymfony-2.1.2.zip。
最初は順調だったのですが、クラスのnamespaceを登録するところで困りました。
symfony2.0と2.1でapp/autoload.phpの内容が違いすぎ。
※この時点では未だComposerについての知識はありません。
少しでも新しい方が良いかなと思ってたのですが、甘かったです。
仕方ないので、web/app_dev.phpから呼ばれる順にソースを追う事に。
あちこち廻って、vendor/composer/autoload_real.phpで$loaderの生成を見つけました。
で、vendor/composer/ClassLoader.phpの冒頭コメント。
/**
* ClassLoader implements a PSR-0 class loader
*
* See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
*
* $loader = new \Composer\Autoload\ClassLoader();
*
* // register classes with namespaces
* $loader->add('Symfony\Component', __DIR__.'/component');
* $loader->add('Symfony', __DIR__.'/framework');
*
なるほど。って事は、$loaderが生成された後、どこかでadd()すれば良いのか。
自動生成されたソースを除外すると、やっぱりapp/autoload.phpなのかな。
app/autoload.phpに$loader->add()を追加したら、サンプルは動作するようになりました。
でも、Composer…。PSR-0...?(つづく)