http://symfony.com/doc/2.8/components/depe...ompilation.html
Zacząłem od nauki service container w oficjalnym podręczniku. Tam wszystko jasne, jak dla opóźnionych w rozwoju. To lubię. Na początku tego tematu jest notka "chcesz wiedzieć więcej czytaj o komponencie Dependency Injection". No to dobrze, przeczytam. Zaczyna się bez problemów: rejestracja serwisów w php w obiekcie ContainerBundle, dodawanie parametrów, argumentów. Ładowanie istniejącyh plików konfiguracyjnych. Modyfikacja definicji serwisów.
Az przychodzi rozdział "Compiling the Container" (w pdf chapter 38). a konkretnie sekcja "Managing Configuration with Extension". (na 5 stronach w pdf)
I tu już nie rozumiem nic. Do tej pory wszystko było jasne:
- Definiuję serwisy w yml (albo xml, albo php) w swoim bundlu w resources/config/services.yml. Importuję ten plik konfiguracyjny w app/config
- Natomiast, gdy chcę by bundel był wyodrębniony i używany w innych projektach to trzeba zadbać o to by serwisy bundla zarejestrować w klasie Extension (implementującej ExtensionInterface) by serwisy były dostępne po prezniesieniu bundla do nowego projektu. By to zrobić trzeba załadować pliki konfiguracyjne w metodzie load()
class AcmeDemoExtension implements ExtensionInterface { { $loader = new XmlFileLoader( $container, new FileLocator(__DIR__.'/../Resources/config') ); $loader->load('services.xml'); } // ... }
Ale to co dalej jest opisywane na kolejnych stronach (pdf) to jest sajgon.
- "The Extension must specify a getAlias method to implement the interface."
class AcmeDemoExtension implements ExtensionInterface { // ... public function getAlias() { return 'acme_demo'; } }
- jaki interfejs? po co? ( musi? a w klasie Extension FOSRestBundle tej metody nie ma.
- For YAML configuration files specifying the alias for the extension as a key will mean that those values
are passed to the Extension's load method
# ... acme_demo: foo: fooValue bar: barValue
- co?
Dobra nie będę dalej cytował kolejnych fragmentów, mam pokreślony cały rozdział pytaniami, alei tak nikt mi nie odpowie na te pytania.
Ale jakby komuś się chciało to tak z grubsza jaka jest idea tego rozdziału? Kiedy mam tego używać? Do czego jest klasa Extension? Czym jest parametr $configs metody load() ?
(a na końcu tego rozdziału jest notka "In the full-stack framework the compilation and caching of the container is taken care of for you. W google i na stackoverfolw nie ma nic co dotyczy COMPILING CONTAINER. Ktoś tego w ogóle używa? )
===========================================
=====edit===================================
macie rację, może zacznę od nauki yamla.