![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
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? -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
![]() Taka sama składnia jest dla call_user_func" title="Zobacz w manualu PHP" target="_manual; we wszystkim, do czego podajesz jakiś callback. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Można prosić o mały feedback co robie źle?
Kod <?php include("class_error_reporting.php"); $error_rep = new class_error_reporting(); //asd ?> Kod <?php
class class_error_reporting { function __construct(){ //set_error_handler(array($error_rep, 'error_handler')); set_error_handler(array($this, 'error_handler')); } function error_handler($errno, $errstr, $errfile, $errline, $errcontext){ echo "$err_no = ".$errno."\n"; echo "$err_str = ".$errstr."\n"; echo "$err_file = ".$errfile."\n"; echo "$err_line = ".$errline."\n"; echo "$err_context = ".$errcontext."\n"; echo "------------------------------"."\n"; } } ?> Ten post edytował flashdev 3.07.2009, 17:41:12 -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
W swoich skryptach miewałem to mniej więcej tak:
Również w konstruktorze. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Raczej w czasach php4 ![]() ![]() ~Flashdev pamietaj ze error handler dotyczy tylko części błędow. Cytat The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called. Poza tym masz błędy typu 'Undefined variable $err_no', wiec musisz użyc ' zamiast ", reszta jest ok. Pomijając, że źle wyświetlasz niektóre zmienne.
Ten post edytował wookieb 3.07.2009, 20:52:40 -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
To ze starego skryptu wycięte; zresztą nie zrobi różnicy - w obu przypadkach (PHP4/5) będzie wówczas referencja.
![]() edit@down: przy jego obecnej wartości to już chyba nie ma znaczenia... ;p -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Wiec twój poprzedni post można uznać za niepotrzebny
![]() ![]() -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Mam kolejny bardzo podobny problem, z którym nie mogę sobie poradzić.
Mam dwie klasy: B i A. tworzę obiekt klasy A: $objA = new A(); I teraz zauważyłem, że w klasie A mam bardzo fajną funkcję o nazwie funkcja, którą chciałbym wykorzystać w klasie B. Jak teraz przekazać tą referencję parametrze konstruktora klasy B, żebym mógł sobie zapisać ten uchwyt w zmiennej, a anastępnie używać do woli. $objB = new B( ![]() Podaje kawałek kodu AS3 (~JS) wyjaśniającego o co mi chodzi. Może ktoś mnie zrozumie. Kod var klasaA:A = new A(); var klasaB:B = new B( klasaA.funkcja ); // zmienna oraz kostruktor w klasie B: var private uchwyt:function; function B( h:function ):void{ uchwyt = h; } // przykladowe wywolanie fajnej funkcji z klasy A w klasie B: function exec():void{ uchwyt(); } Może nie do końca wszystko rozumiem jak to się robi w php. Może nikt o zdrowych zmysłach nie wykonuje funkcji z klasy A w klasie B. Jeśli tak jest to prosiłbym o jakieś wskazówki w postaci linków do wartościowych artykułów wprowadzajacych w temat php. Ten post edytował flashdev 18.07.2009, 20:23:45 -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Uchwyt przekazujesz tak, jak dowolną zmienną.
Czyli do konstruktora podstawiasz zmienną, która trzyma potrzebną Ci klasę, konstruktor ustawia odpowiednią własność w klasie, a pozostałe funkcje z tej klasy korzystają z własności. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Uchwyt przekazujesz tak, jak dowolną zmienną. Czyli do konstruktora podstawiasz zmienną, która trzyma potrzebną Ci klasę, konstruktor ustawia odpowiednią własność w klasie, a pozostałe funkcje z tej klasy korzystają z własności. W tej chwili podałeś mi przepis na przekazanie referencji do klasy z czym potrafię sobie już poradzić na tym etapie przygody z php. Proszę o przeczytanie mojego bełkotu ze zrozumieniem ![]() -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Np
Albo zrobisz ta metodę jako statyczną i wtedy tylko
Trzecia opcja to
Niestety w php nie ma tak fajnych callbacków jak choćby w AS3 :/ Ten post edytował wookieb 18.07.2009, 20:54:44 -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 06:50 |