Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]co to za magia w plikach konfiguracyjnych YAML?
Forum PHP.pl > Forum > Przedszkole
koszykarze
na przykładzie najwyższego kodu z tej strony http://symfony.com/doc/current/book/configuration.html po przełączeniu widoku z yml na php dzieje się coś tajemniczego.

gdy dyrektywa imports to w php wywoływana jest metoda $this->import()
gdy dyrektywa twig, framework to w php wywołana jest metoda $container->loadFromExtension


Jak to wyjaśnić?







Ten poniższy paskudny kod lepiej oglądać z powyższego linka.
Kod
# app/config/config.yml
imports:
    - { resource: parameters.yml }
    - { resource: security.yml }

framework:
    secret:          '%secret%'
    router:          { resource: '%kernel.root_dir%/config/routing.yml' }
    # ...

# Twig Configuration
twig:
    debug:            '%kernel.debug%'
    strict_variables: '%kernel.debug%'

# ...

  1. // app/config/config.php
  2. $this->import('parameters.yml');
  3. $this->import('security.yml');
  4.  
  5. $container->loadFromExtension('framework', array(
  6. 'secret' => '%secret%',
  7. 'router' => array(
  8. 'resource' => '%kernel.root_dir%/config/routing.php',
  9. ),
  10. // ...
  11. ));
  12.  
  13. // Twig Configuration
  14. $container->loadFromExtension('twig', array(
  15. 'debug' => '%kernel.debug%',
  16. 'strict_variables' => '%kernel.debug%',
  17. ));
  18.  
  19. // ...
Panicz74
Tutaj masz fajny parser dla formatu YAML, który pomoże Ci zrozumieć o co w nim chodzi:
yaml-online-parser.appspot.com

Jak widać, Fabian pomyślał o wszystkim smile.gif
lukaskolista
Cytat
co to za magia w plikach konfiguracyjnych YAML?
Ty chyba magii nie widziałeśsmile.gif akurat Symfony bym o magię nie posądzał.

Przechodząc do odpowiedzi na Twoje pytanie:
serio, gdzie tu jest magia?

Jak nazwa wskazuje import służy do importu, więc wywołujemy metodę ->import('resource.yml')
Jak nazwa nie wskazuje, ale uwierz mi na słowo framework i twig to nazwy pakietów w Symfony, a do ładowania konfiguracji pakietów służą właśnie rozszerzenia tych pakietów (extensions), więc użycie metody ->loadFromExtension($extension, array $config) jest całkiem logiczne.

Nie rozumiem, czemu resources i framework miały by być obsługiwane w ten sam sposób, skoro służą do różnych rzeczy. To tak, jakbyś miał w konfiguracji klucze "email" i "user" i byś się dziwił, dlaczego dla "email" jest używana metoda send(), a dla user login().

Podsumowując:
MAGII BRAK, JEST OK

Jeżeli zaczynasz naukę Symfony i masz małe doświadczenie w php, to używaj YAMLa (z resztą w wewnętrznych pakietach aplikacji powinno się go używać), ew. XML dla pakietów zewnętrznych, które chcesz publikować. Formatu PHP nie używaj i nie zawracaj sobie nim głowy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.