Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> przechwycenie funkcji - debugowanie
szagi3891
post
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 9
Dołączył: 12.03.2007
Skąd: kraków/tarnobrzeg/baranów/suchorzów

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


Czy ktoś zna może sposób na przechwycenie wywołania funkcji (np. wbudowanej w php) ?

Zależy mi na tym aby daną funkcję (np. headers) przechwycić i logować jej wszystkie wywołania za pomocą np. debug_backtrace, która by mi udzieliła wszystkich informacji z którego miejsca została wywołana i z jakimi parametrami. Po zapisaniu informacji przekazywanie następowało by do pierwotnej funkcji. Taka informacja mogła by się przydać podczas debugowania skryptu.

Wertuje php.net oraz google i zaczynam tracić wiarę że taka możliwość istnieje.

Czy ktoś zna może sposób jak można tego dokonać ?

Ten post edytował szagi3891 15.06.2007, 23:39:51
Go to the top of the page
+Quote Post
domis86
post
Post #2





Grupa: Zarejestrowani
Postów: 255
Pomógł: 5
Dołączył: 20.03.2007
Skąd: Kraków

Ostrzeżenie: (30%)
XX---


moze schakuj php? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
i po co Ci to w ogole?

Ten post edytował domis86 15.06.2007, 23:46:52
Go to the top of the page
+Quote Post
szagi3891
post
Post #3





Grupa: Zarejestrowani
Postów: 109
Pomógł: 9
Dołączył: 12.03.2007
Skąd: kraków/tarnobrzeg/baranów/suchorzów

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


Cytat(domis86 @ 16.06.2007, 00:46:29 ) *


Wszakże to grzechem jest ... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Cytat(domis86 @ 16.06.2007, 00:46:29 ) *
i po co Ci to w ogole?


Wyobraź sobie że używasz jakiejś standardowej funkcji w wielu miejscach z których wiesz że jedna dostaje nieprawidłowy parametr i nie wiesz która to i chcesz ją namierzyć. A tak piszesz sobie swoją funkcję, lugujesz co trzeba i wywołujesz pierwotną funkcję (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
domis86
post
Post #4





Grupa: Zarejestrowani
Postów: 255
Pomógł: 5
Dołączył: 20.03.2007
Skąd: Kraków

Ostrzeżenie: (30%)
XX---


moze tak:
zrób sobie klase powiedzmy o nazwie std, ktora zawiera magiczną metodę "__call"
i teraz metoda call ma dzialac mniej wiecej tak:
1.dostaje $name i $params
2.loguje sobie nazwe funkcji i parametry i co tam jeszcze chcesz
3.uruchamia funkcje o nazwie $name z paramatrami $params (uzywając np: call_user_func_array)
4. jeszcze moze cos logowac

i teraz jak chcesz logowac funkcje header to musisz wszystkie :
header(...)
zamienic na:
$std->header(...)

(replace all w edytorze (IMG:http://forum.php.pl/style_emoticons/default/aarambo.gif) )
Go to the top of the page
+Quote Post
szagi3891
post
Post #5





Grupa: Zarejestrowani
Postów: 109
Pomógł: 9
Dołączył: 12.03.2007
Skąd: kraków/tarnobrzeg/baranów/suchorzów

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


hehe, wydaje mi się że to samo równie dobrze można by osiągnąć tworząc funkcję header2(...) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Właśnie tego replace all chciałbym uniknąć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Chociaż wykorzystanie klasy w ten sposób wydaje się ciekawym pomysłem.
Go to the top of the page
+Quote Post
SirZooro
post
Post #6





Grupa: Zarejestrowani
Postów: 243
Pomógł: 32
Dołączył: 14.06.2007

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


Spróbuj tego: http://pecl.php.net/package/intercept. Niestety obecnie jest to jeszcze wersja alpha, i trzeba to sobie samemu skompilować.
Go to the top of the page
+Quote Post

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: 26.09.2025 - 01:17