2012-03-30 13 views
7

Szczerze, nie próbuję trollować. Jest to poważne pytanie, które, jak sądzę, prawie na pewno ma konkretną, obiektywną odpowiedź.Dlaczego Symfony 1.x faworyzuje konwencję nad konfiguracją, ale Symfony 2.x przeciwnie?

Symfony 1.x, podobnie jak Railsy, ​​wydawały się przestrzegać zasady konwencji dotyczącej konfiguracji. Na przykład, gdy tworzysz moduł, a następnie tworzysz akcje w kontrolerze modułu, nie musisz tworzyć nowych reguł routingu. Symfony po prostu wiedział, co robić. Ale teraz z Symfony2 musisz jawnie utworzyć trasy. To tylko przykład. Są inne przypadki, które wydają się świadomą decyzją faworyzowania konfiguracji ponad konwencją. Jestem absolutnie zaskoczony, dlaczego.

Moje pytanie brzmi następująco: Dlaczego Symfony 1.x faworyzuje konwencję w stosunku do konfiguracji, ale Symfony 2.x przeciwnie?

Przepraszamy, jeśli to pytanie jest w złym miejscu. Przypuszczam, że to nie może być pytanie programistyczne. Jeśli jest bardziej odpowiednie miejsce, aby zadać to pytanie, daj mi znać, a ja z chęcią się tam przeprowadzę.

+1

Wygląda na to, że mieszasz konwencję z konfiguracją za pomocą magii. Symfony2 ma prawie taką samą ilość konwencji dotyczących konfiguracji. Po prostu opuścili wiele magicznych rzeczy, żeby wiedzieć, co się dzieje. – Sgoettschkes

Odpowiedz

6

Symfony2 wciąż faworyzuje konwencję nad konfiguracją, ale po prostu pozbyło się wielu "magii", faworyzując wyraźnie "magiczne". Powód jest taki, że "magia" była pomocna w prostych przypadkach, ale wiele zamieszania i problemów spowodowało na dłuższą metę.

I nie tylko Symfony2 to zrobiła, ale cała społeczność PHP. Doktryna 2 to zrobiła. Zend Framework 2 to: doing.

+0

+1, dodam tylko, że Symfony2 w istocie faworyzuje konwencję, ale nie zmusza go do podążania za nią, zapewniając pełną swobodę dostosowywania, umożliwiając tworzenie takich rzeczy jak KnpRadBundle, co jest niesamowite w moich oczach :) – Inoryy

+0

W porządku , Myślę, że to zaspokoi moją ciekawość. Całkowicie nie zgadzam się z tym, co zrobili, ale przynajmniej teraz rozumiem trochę lepiej, dlaczego to zrobili. –

+0

@JasonSwett Zgadzam się z Tobą. Niektórzy twierdzą, że jest to spowodowane problemami z wydajnością, ale jeśli potrzebujesz jeszcze kilku dni na zakodowanie funkcji, dodanie serwera do architektury kosztuje mniej pieniędzy ... – MaximeBernard