![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 5.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przykładowa sytuacja wygląda tak:
Mam plik functions.php, a w nim zbiór jakiś tam funckji.
Mam też inny plik np index.php, który korzysta z funkcji zawartych w pliku functions.php
I teraz moje pytanie: Czy wewnątrz definicji funkcji doSomething() da się ustalić nazwę skryptu (w tym wypadku z index.php) oraz numer linii w skrypcie z którego została wywołana (w tym wypadku numer linii również w skrypcie index.php)? Są odpowiednie specjalne stałe
ale zastosowanie ich wewnątrz definicji funckji doSomething() w taki sposób:
zwróci nazwę skryptu functions.php oraz linię wywołania stałej __LINE__ również wewnątrz skryptu functions.php. Można oczywiście jakoś przekazać nazwę skryptu i miejsce wywołania: index.php: functions.php:
ale dla zachowania elegancji rozwiązania chciałbym tego uniknąć. Do czego to potrzebne? Otóż jeśli aplikacja jest duża i jeśli podczas wykonywania funkcji powstaną jakieś błędy to wewnątrz funkcji można byłoby wyświetlać komunikat o miejscu jej wywołania w celu łatwiejszego odnalezienia i usunięcia błędu. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Wszystko fajnie, tylko że miejsce wywołania danej funkcji nie jest i nie będzie faktycznym miejscem wystąpienia błędu. Po co sobie utrudniać w ten sposób życie i mylnie kierować do miejsca wywołania, skoro i tak miejscem docelowym powinno być miejsce, w którym wystąpił błąd?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 5.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko fajnie, tylko że miejsce wywołania danej funkcji nie jest i nie będzie faktycznym miejscem wystąpienia błędu. Po co sobie utrudniać w ten sposób życie i mylnie kierować do miejsca wywołania, skoro i tak miejscem docelowym powinno być miejsce, w którym wystąpił błąd? Nie do końca to jest prawdą - miejsce wywołania funkcji jest i może być przydatne. Przykład: Jeśli funkcja, która coś robi przyjmuje jako parametr wcześniej skonstruowane zapytanie SQL i wykonuje to zapytanie to potrzebowałbym informacji o tym gdzie została wywołana ta funkcja. Raczej nie potrzebuje informacji, o miejscu powstania błędu (w tym wypadku skrypt i linia wywołania funkcji np. mysql_query()) bo to miejsce będzie wciąż to samo dla wszystkich błędnie skonstruowanych zapytań SQL. Jakieś propozycje na rozwiązanie problemu? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie do końca to jest prawdą - miejsce wywołania funkcji jest i może być przydatne. Przykład: Jeśli funkcja, która coś robi przyjmuje jako parametr wcześniej skonstruowane zapytanie SQL i wykonuje to zapytanie to potrzebowałbym informacji o tym gdzie została wywołana ta funkcja. Raczej nie potrzebuje informacji, o miejscu powstania błędu (w tym wypadku skrypt i linia wywołania funkcji np. mysql_query()) bo to miejsce będzie wciąż to samo dla wszystkich błędnie skonstruowanych zapytań SQL. Jakieś propozycje na rozwiązanie problemu? Hmm zerknij debug_print_backtrace oraz debug_backtrace |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 22:37 |