Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] handler funkcji w klasie
flashdev
post
Post #1





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Piszęe klasę do obsługi błędów w php i mam mały problem.

Kod
function error_handler(..){
...
}
set_error_handler(error_handler);


ten kod mi działa, ale jak chce podać uchwyt do funkcji w klasie to jest problem

Kod
// tak nie dziala:
set_error_handler($this->error_handler);
// tak tez nie:
set_error_handler("$this->error_handler");


Jestem przyzwyczajony do JS i tam normalnie nazwa funkcji bez nawiasów jest do niej uchwytem.
A w php np. ponizsze wyrazenie jest prawdziwe:
Kod
echo gettype(abc)==gettype("abc");


Czyli pomimo ze mam w kodzie funkcje abc, to php traktuje to jako string, a nie uchwyt.

Jak rozwiazac ten problem, jak odwolac sie do tej funkcji w klasie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Np
  1. <?php
  2. $klasaA=new A();
  3.  
  4. $klasaB=new B($klasaA);
  5.  
  6.  
  7. // W klasie B używasz tego tak
  8. $wynik=call_user_func($this->uchwyt);
  9. ?>


Albo zrobisz ta metodę jako statyczną i wtedy tylko
  1. <?php
  2. A::funkcja();
  3. ?>


Trzecia opcja to

  1. <?php
  2. $klasaA=new A();
  3.  
  4. $klasaB=new B(array($klasaA, 'funkcja'));
  5.  
  6.  
  7. class B
  8. {
  9. public function __construct(A $a)
  10. {
  11. $this->klasa=$a;
  12. }
  13.  
  14. public function test()
  15. {
  16. $this->klasa->funkcja();
  17. }
  18. }
  19. ?>


Niestety w php nie ma tak fajnych callbacków jak choćby w AS3 :/

Ten post edytował wookieb 18.07.2009, 20:54:44
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 21:57