Some of posts from this blog has been moved to dywicki.pl. You will be automatically redirected to new blog if you would submit comment.
New posts are published on dywicki.pl, this blog contains old content and it is not continued.

Niektóre posty z tego bloga zostały przeniesione do dywicki.pl. Zostaniesz automatycznie przekierowany jeśli bedzięsz chciał dodać komentarz.
Nowe posty sa publikowane na dywicki.pl, ten blog zawiera stare treści i nie jest kontynuowany.

Dlaczego konfiguracja w XML.

Filed under PHP,Wiadomości,XML by

W czasach kiedy najbardziej trendy jest YAML twierdzę, że jest on niczym w porównaniu do tego, co oferuje XML. DLaczego?

Dlatego, że tworząc dowolny dokument XML mogę go w bardzo prosty sposób rozszeżyć. Jak? Poprzez XInclude. Jego obsługa jest nawet w PHP więc nie ma z tym jakichkolwiek problemów. Definiuję tylko odnośnik i mam dołączony ten XML [po wykonaniu $DOMDocument->xinclude();].

Kolejna sprawa. Walidacja. Nie muszę tworzyć żadnego kodu w PHP by sprawdzić poprawność XMLa. Wystarczy, że stworzę dobry schemat w XSD i mam walidację załatwioną bez jakiegokolwiek warunku. Do tego dochodzą ograniczenia takie jak rekurencja. W PHP  muszę to załatwiać poprzez wielokrotne wywołanie funkcji, które za każdym razem wydłuża czas. Normalnie załatwi mi to DOM XML, który jest napisany w C i będzie znacznie szybszy.

Parę linijek kodu i moja konfiguracja zapisana w XMLu stanie się czytelna dla oka przy użyciu XSLT w połączeniu z PHP.
Także czy dalej YAML i INI jest najlepszym sposobem przechowywania konfiguracji? Moim zdaniem nie – i nigdy nie będzie. XML jest technologią, która fakt faktem, jest nadmiarowa, ale oferuje bardzo dużą popularność. Można mówić, że YAML jest czytelny i przyjazny, ale nie oferuje takiej funkcjonalności przy takim małym nakładzie sił. XML jest wszędzie, jest prosty. Sprawdzanie poprawności dokumentu można załatwić poprzez inny XML a jego prezentacje poprzez kolejny, także znajomość technologii związanych z XMLem jest niewątpliwie przydatna.

11 responses so far

11 Responses to “Dlaczego konfiguracja w XML.”

  1. eX says:

    Popularność YAMLa wynika w dużej mierze z mody na Ruby on Rails i wzorowane na nim frameworki dla PHP, np. Symfony, czy dla innych języków. Popularność YAMLa nie jest to nic innego niż owczy pęd, kolejna nowinka, coś co się wydaje łatwe i przyjemne.

  2. pawel_k says:

    moim zdaniem kwestia jes inna; konfiguracja powinna być stała i się nie zmieniać (lub niezby często sie zmieniac). a co za tym idzie, najlepiej powinna być zrobiona w samym php. idąc tym tropem, jeśli już korzystamy z xml’a czy yaml’a config powinien byc keszowany, zeby niepotrzebnie nie marnować czasu na przetwarzanie czy to xml’a, yamla czy nawet plików ini.
    teraz pytanie – czy jak szef firmy będzie chciał zmienić koniguracje to czy będzie mu wygodniej pisac w xml czy yaml? czy osoba tłumacząca plik internacjonalizacji bedzie bardziej zadowolona z yaml’a czy xml’a? oczywiscie problemem nie powinien byc zadem przypadek ale jacy ludzie są wszyscy wiemy :/
    moim zdaniem jesli wszyskim zajmuje sie programista, to raczej bedzie mu wszystko jedno i wybierze odpowiadajace mu rozwiazanie, jesli wkracza szalony uzyszkodnik lepiej pozostawic mu yaml’a.
    na koniec dodam ze yaml nie został stworzony do tego w czym dobry jest xml – czyli do wymiany danych.

  3. mike_mech says:

    @pawel_k równie dobrze mogłeś zapytać: “A co jak ciocia Zosia będzie chciała coś zmienić?”
    Wywoływanie tutaj jakiegoś szefa do zmiany czegkolwiek w aplikacji to już nawet nie abstrakcja tylko niedorzeczność.
    Tak samo jak szef jak i jego klient będą oczekiwali kliknięcia, maksymalnie dwóch w celu zmiany czegokolwiek.
    Więc wybór technologii sprowadza się do szybkości wydajności i wygody programisty, która wbrew pozorom wcale nie jest bez znaczenia. Więc jeśli szalony użyszkodnik ma okazję w ogóle grzebać w konfiguracji to znaczy że coś jest nie tak z projektem aplikacji.

  4. seaquest says:

    No właśnie. Yaml, czy też ini są dużo szybsze od XML’a (mówię o samym procesie parsowania). Oczywiście robi się cache i wtedy te różnice szybkości pewnie nie są tak duże, ale wydaje mi się, że Yaml jest momentami bardziej czytelny niż XML.

  5. pawel_k says:

    @mike
    to co napisałem powinno byc niedorzecznoscią i tez tak sadzilem az jeden koles nie wydzwanial do mnie bo mu strona nie dziala… jak sie okazalo przez panel admina na swoim home.pl zminil “dla bezpieczenstwa” haslo do bazy, nie uaktualizujac konfiga.

    co do plikow z językiem to podtrzymuje swoje zdanie ze yaml jest znacznie lepszy niz xml bo to nie programista bedzie tlumaczyl aplikacje na kilka jezykow i tu nie jesmu n\ma byc wygodniej. i tu czytelnosc yamla sie przydaje.

    tak na prawde nie ma sensu prowadzic nowej wojny w stylu cake vs symfony,wlasciwie to co mozna powiedziec to to ze racja jest jak dupa, kazdy ma wlasną…

    i yaml i xml maja swoje wady i zalety, a tak w rzeczywistosci to do koniguracji, bo o tym jest ten temat, nie nadaja sie z powodu ciaglego parsowania i trzeba to przez cache przerzucic zeby mialo sens.

  6. @pawel_k
    Wydaje mi się, że do plików językowych najlepsze będą pliki INI. Pliki te są szatkowane bardzo często, zwykle jest tak, że jeden request to kilka plików z tłumaczeniami. INI będzie parsowane znacznie szybciej niż jakikolwiek YAML. Tracimy w tym momencie na czytelności, ale co takiego potrzeba komuś kto tłumaczy teksty? Czy wcięcia w YAMLu są aż takie przydatne przy tłumaczeniu?
    Wątpię.

    @seaquest
    “Yaml, czy też ini są dużo szybsze od XML”. Co do INI – bez wątpienia się zgodzę. Co do YAMLa nie. XML jest obsługiwany przez funkcje napisane w C – może to być od biedy SimpleXML. YAML to wyrażenia regularne i walonka z obróbką ciągów w samym PHP. IMHO w życiu parsowanie YAMLa w PHP nie dogoni XMLa, choć przy rozszeżeniu do YAMLa napisanym w C sytuacja bez wątpienia ulegnie zmianie.
    Naturalnie YAML jest czasami czytelniejszy niż XML, ale jakoś nie porywa mnie on sam w sobie. Chodzi mi dokładnie o to, że jestem uzależniony od wcięć. Można się wkurzyć, kiedy po 2 godzinach walki z aplikacją okazuje się, że w jednym miejscu zabrakło jednej spacji.
    Jednym słowem XML jest dla mnie wystarczająco czytelny by tworzyć w nim konfiguracje a funkcjonalność, którą oferuje w połączeniu z innymi technologiami jest tym, czego YAML nigdy nie miał i mieć nie będzie. XML to nie tylko konfiguracja. YAML to tylko konfiguracja.

  7. Vee says:

    Te konfigurowanie wszystkiego w XMLu też już mnie rozbraja :/ A frameworki, gdzie każdą akcję opisuje się w XMLu to już jakiś idiotyzm dla mnie.

    U mnie najczęśćiej konf to zwykły .php z podstawowymi sprawami jak dane do bazy i ścieżki. Reszta, to najczęściej konfiguracja dostępna dla urzytkownika – trzymana w tabelce bazy danych.

    A te mody na YAMLe czy inne to już w ogole magia ;P

  8. […] łączenia konfiguracji, w końcu brak narzędzia do walidacji zapisanych danych. W poście “Dlaczego konfiguracja w XML” porównywałem XML również do YAMLa. Sporą zmianą, naturalnie, na lepsze było […]

  9. menic says:

    YAML moze jest na topie i jest cool, ale mi nie pasuje. Zgadzam sie ze Splatch’em co do tej spacji w yaml’u. Sam miałem taką sytuacje. GDzies było o jedna za duzo, badź był tabulator zamiast spacji i pare godzin w plecy ;)

  10. […] możliwości. Troszkę dywagacji na ten temat było jakiś czas temu w poście pod tytułem “Dlaczego konfiguracja w XML“. Jednym z problemów związanych z XMLem jest konieczność zapamiętania nazw znaczników i […]

  11. MeME says:

    Witam,

    Google mi mówi, że ta witryna może wyrządzić szkody w moim komputerze?


    Pozdrawiam
    MM

Leave a Reply