Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> metoda wywoływana przed każdą metodą
sazian
post
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
  1. class klasa
  2. {
  3. public function before()
  4. {
  5.  
  6. }
  7. public function a()
  8. {
  9.  
  10. }
  11.  
  12. }
  13. $o = new klasa();
  14. $o->a();


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,
  1. class klasa
  2. {
  3. public function before()
  4. {
  5.  
  6. }
  7. public function a()
  8. {
  9. $this->b();
  10. }
  11. public function b()
  12. {
  13.  
  14. }
  15.  
  16.  
  17. }
  18.  
  19. $o = new klasa();
  20. $o->a();


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 ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Takie coś możliwe by było do wykonania przy pomocy AOP-a - aspekt ze zdefiniowanym pointcutem before call dla każdej metody obiektu - ale PHP nie jest językiem tego typu. Nie pozostaje Ci w sumie nic innego niż to co napisał @adbacz.
Jednak mnie bardziej zastanawia po co w ogóle Ci takie zachowanie? Możesz opisać dokładniej co chcesz tym wszystkim osiągnąć? Może jest inne, lepsze rozwiązanie.

Ten post edytował Crozin 1.08.2012, 17:59:12
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 10:48