Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF2][SF][Symfony2]Managing Configuration with Extensions. Ktoś to rozumie? Ktoś tego używał?, DependencyInjection
koszykarze
post
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 10.10.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Panie boże, męczę ten temat od tygodnia.

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()
  1. class AcmeDemoExtension implements ExtensionInterface
  2. {
  3. public function load(array $configs, ContainerBuilder $container)
  4. {
  5. $loader = new XmlFileLoader(
  6. $container,
  7. new FileLocator(__DIR__.'/../Resources/config')
  8. );
  9. $loader->load('services.xml');
  10. }
  11. // ...
  12. }


Ale to co dalej jest opisywane na kolejnych stronach (pdf) to jest sajgon.
- "The Extension must specify a getAlias method to implement the interface."
  1. class AcmeDemoExtension implements ExtensionInterface
  2. {
  3. // ...
  4. public function getAlias()
  5. {
  6. return 'acme_demo';
  7. }
  8. }

- 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

  1. # ...
  2. acme_demo:
  3. foo: fooValue
  4. 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.

Ten post edytował koszykarze 27.01.2016, 23:06:59
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 29.09.2025 - 23:31