Moda jest wszędzie. I nie chodzi mi tutaj o kraciaste koszule programistów. Programowanie, podobnie jak inne dziedziny naszego życia, ulega wielu wpływom. Programowanie w PHP ulega tym wpływom jeszcze bardziej. Dzieje się to głównie za sprawą opinii jaka za tym językiem się ciągnie. Programiści chcąc ją poprawić, chwytają się wszelkich możliwych sposób, by udowodnić, że PHP jest na czasie ze wszystkimi nowinkami / pseudo-standardami.
Jedną z takich nowinek jest bardzo popularny ostatnio MVC. Od dobrych kilku miesięcy (a może i lat) jakość aplikacji PHP oceniana jest po tych trzech magicznych literkach. Jeśli na pytanie “Czy Twoja aplikacja została napisana w duchu MVC?” padnie odpowiedź, że nie, wówczas od razu traci uznanie. Najzabawniejsze w tej całej sytuacji jest to, że niewiele osób wie, czym tak naprawdę MVC jest, oraz że nie jest to jedyna słuszna droga do tworzenia aplikacji. Jeśli spojrzymy na dowolne forum poświęcone programowaniu w PHP, bardzo szybko znajdziemy na nim dziesiątki tematów z pytaniami w stylu “Gdzie mam umieścić widok?” lub “Czy ta klasa to już model?”. Winę za to ponosi dosyć luźna interpretacja tego wzorca oraz techniczne ograniczenia języka. Zasadą przyświecającą MVC jest oddzielenie od siebie warstw aplikacji. I tutaj zaczynają się schody. Oddzielenie warstw może odbywać się na kilku poziomach. Można stworzyć jeden plik, w którym znajdzie się dostęp do danych, manipulacja danymi oraz ich prezentacja i będzie można powiedzieć, że taki plik został stworzony zgodnie z MVC (gdzie jest napisane, że każdy element tej układanki musi być w osobnym pliku?). Można również podzielić to na dziesiątki plików, dodać helpery, pluginy, router, dispacher i inne cuda. Reguły na to nie ma.
Czy jesteśmy skazani na MVC? Niestety tak. Podobnie jak kiedyś popularny był Singleton, tak teraz panuje moda na MVC (w najczystszej postaci). Stąd też nieco prowokujący tytuł. Zamiast na ślepo iść za modą, warto zastanowić się, czy w naszym przypadku ma ona rację bytu. Może okazać się, że jedna z literek jest nam kompletnie niepotrzebna, a może któraś z nich będzie wymagała dodatkowego podziału na kolejne elementy? W końcu może okazać się, że nasze każda literka w naszym MVC, ma swoje własne MVC w środku. Niestety nie ma dobrej alternatywy dla modelu wielowarstwowego. W chwili obecnej jest to najlepsze podejście to tworzenia aplikacji i tylko od nas zależy jak z niego skorzystamy.
