Niedawno sam zaczałem pisać CMS. Z założenia miałbyć pochodna Joomla, ale bardziej rozudowaną z programistycznego punktu widzenia. Chodziło o to, zeby można było zewrzeć w systemie duzo komponentów i modułów. Żeby ich pisanie pod FW tego CMSa było przyjemne i sprowadzało się do pisania kontrolerów, modeli i widoków. No i tak tez to działa. Nie musimy wiedziec nic na temat działania wnetrza aplikacji, piszemy to co chcemy i (powinno) działa.
Ja moduły rozwiązałem tak, że są to pojedyńcze klasy PHP (oczywiście współgrające z klasą językową), które sa wywoływane w danym momencie, podczas renderowania widoku. Czyli, klasa GlobalVariables posiada metogę modulePosition($name), gdzie $name to nazwa pozycji, i podczas renderowania, w miejsca gdzie zostanie wywołana ta metoda, zostaną wstrzyknięce dane, które zwróci dany moduł.
Oczywiście jeszcze do tego wszystkiego jest zaprzęgnięta baza danych (tworzenie miliona modułów z udziałem jednej klasy [pliku]), no i (przynajmniej u mnie tak jest), instancja klasy modułu tworzona jest raz, ale gdy powiedzmy w DB znajduje się 5 takich samych modułów, 5 razy jest uruchamiany moduł z innymi paramertami. On już sobie tam robi wszystko co chce, aplikacja czeka tylko, aż on zwróci stringa. Wsio..