![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
Witam,
wiem że temat brzmi w sposób nieco zagmatwany ale nie wiedziałem jak to inaczej nazwać. O co chodzi postaram się wyjaśnić na przykładzie
czy istnieje możliwość aby przed wywołaniem metody "a" została niejawnie wywołana metoda "before" czyli kolejność wywołania wyglądała by tak before => a idąc dalej,
i tu kolejność wywołań miała by wyglądać tak before => a => before => b. A idąc jeszcze dalej, czy metoda before może być informowana jaka metoda będzie wywołana po niej? jedyne co przychodzi mi do głowy to jakaś metoda call która przyjmie jako parametry nazwę metody i jej parametry ale takie rozwiązanie nie jest automatyczne i jeśli "się zapomni" użyć call to before nie będzie wywołany ;/ czy zrobienie czegoś takiego jest możliwe ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Z puktu widzenia PHP się nie da. Musiałbyś napisać klasę do zarządzania obiektem, któremu dawałbyś obiekt i nazwę metody, a on by uruchomił najpierw before() a później tą metodę, którą chcesz. Nie widze innego wyjścia, bo PHP sam w sobie nie daje takiej możliwości - no chyba daje, to niech ktoś mnie oświeci.
Z tą metodą call możesz popróbować tak, że każdą metodę będziesz nazywał na przykład __MyMethod(), ale metode obiektu będziesz wywoływał MyMethod(). W tedy wykona się metoda __call(), w której już sobie będziesz robił to co potrzebujesz, czyli na przykład:
Oczywiście to kod "pisany na kolanie", ale powinno działać w Twoim przypadku. Minusem tego, jest fakt, że metodę __call() musiałbyś podawać za każdym razem do klasy, która ma działać w ten sam sposób - chyba, że załątwisz do dziedziczeniem. Plusem napisania klasy do zarządzania obiektami, jak napisałem wcześniej, jest to, że prawie o nic nie musisz się martwić. Klasa nie musi posiadać metody before() ponieważ, możesz sprawdać istnienie tej metody w klasie do zarządzania obiektami. problemem może być fakt, że wywołanie takiej metody może być troszke dłuższe:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 01:26 |