Symfony2 nie jest jeszcze skończone, a jego wydanie planowane jest na marzec tego roku. Nie mogąc już dłużej czekać, zacząłem bawić się tym frameworkiem nieco poważniej. Ponieważ lubię wiedzieć co się dzieje, po kilku testach z gotowym szkieletem projektu (tzw sandbox) zapragnąłem wygenerować czysty. Uwaga: opisywany tutaj symfony-bootstrapper został zarzucony i jest już nie utrzymywany. Jest już kilka artykułów na ten temat. Wszystkie opisują symfony-bootstrapper:
- Make your own Symfony2 sandbox (the easy way) (by @webPragmatist)
- Symfony2 project initialization (by @henrikbjorn)
Symfony2 project from scratch Symfony2 cały czas ewoluuje. Myślę, że dla kogoś kto chce być na bieżąco najlepiej jest podłączyć zależności jako submoduły w gicie. Zaczynamy od pobrania bootstrappera Symfony2:
git clone git://github.com/symfony/symfony-bootstrapper.git ~/workspace/lib/Symfony2-bootstrapper
Tworzymy katalog na projekt i inicjalizujemy repozytorium git:
mkdir ~/workspace/projects/FooBar
cd ~/workspace/projects/FooBar
git init .
Teraz możemy wygenerować podstawową strukturę projektu za pomocą bootstrappera:
cd ~/workspace/projects/FooBar
php ~/workspace/lib/Symfony2-bootstrapper/symfony.phar init --name 'FooBar' --format="yml"
git add app/ src/ web/
git commit -m 'Wygenerowałem aplikację Symfony2.'
Na koniec podłączamy Symfony2 i inne zależności jako submoduły gita:
cd ~/workspace/projects/FooBar
git submodule add git://github.com/symfony/symfony.git src/vendor/symfony
cat src/vendor/symfony/install_vendors.sh | grep "git clone" | awk '{print "git submodule add "$3" src/vendor/"$4}' | while read line; do $line; done
git commit -m 'Dodałem submoduły z zależnościami.'
Uwaga: W momencie pisania tego artykułu istniał mały defekt w bootstrapperze. Niedawno klasa UniversalClassLoader została przeniesiona do osobnego komponentu. Jednak bootstrapper szuka jej w poprzednim miejscu. Wysłałem poprawkę, ale jeszcze nie została włączona. Tymczasowo wystarczy zmodyfikować ścieżkę w the src/autoload.php wygenerowanego projektu (trzeba zamienić HttpFoundation _na _ClassLoader w ścieżce do pliku UniversalClassLoader.php).