Witam,
Nurtuje mnie pewien problem odnośnie OOP. Wrzucił bym ten temat do MVC ale mojemu silnikowi daaaleeeko do MVC, jest raczej pseudo- dla tego proszę by czytać pojęcia które napisałem z przymróżeniem oka i ewentualnie poprawiać mnie na pw by tu nie śmiecić. Tak czy inaczej jest obiekt, główny obiekt który wszystkim zarządza (kontroler). Napisałem metodę dodawania klas o których informacja znajduje się w tablicy - zmiennej obiektu kontrolera. Napisałem metodę __call by w zależności od tego czy wyłowywana metoda należy do kontrolera czy do klas "dzieci" albo jest "hooked_", wywołuje ją odpowiednio przetwarzając dane/metody.
Przykładowo, kontroler ładuję klasę odpowiadającą za komunikację php<=>sql (database layer). Jeśli metoda "query()" należała by do kontrolera, wystarczyło by wywołać ją "$this->query()". Jeśli była by "hooked_" należało by wpisać "$this->hooked_query()". Jeśli należy do obiektu sql, należy wpisać "$this->sql_query()", można też podpiąć pod nią hooki i zmieszać to, wpisało by się wtedy "$this->hooked_sql_query()". To tak działa pokrótce.
Do rzeczy. Moim problemem jest to, jak zrobić by można było odwoływać się pomiędzy obiektami w dwie strony. Call_user_func odpada - działa tylko z metodami statycznymi. Przeszło mi przez głowę, by w każym hook'u/pluginie wpisywać global $main (bo tak się nazywa obiekt kontrolera). Nawiasem mówiąc - hooki są obiektami zawierające metody które są odpalane przed lub po hookowanej metodzie poszczególnych obiektów - kontrolera lub "dzieci" - oczywiście w tablicy trzymam czarną listę metod których nie da się hookować. I dopiero po "global $main" odwoływać się do "rodzica". Czy istnieje jakiś inny, łatwiejszy sposób, bardziej zautomatyzowany niż "global $main" lub coś co działa podobnie do call_user_func ale dla nie statycznych metod?