Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]stała __FILE__ i wywoływanie z funkcji.
Forum PHP.pl > Forum > Przedszkole
erix
Zwykle, stała __FILE__ zawiera wartość z nazwą pliku, w którym jest wywoływana.

Załóżmy, że robię sobie klasę dziennika, np. chcę zapisywać zapytania SQL, dla debugowania i jednocześnie plik, w którym to zapytanie zostało wywołane.

W SMF zauważyłem, że jest to realizowane w ten sposób (nie pamiętam dosłownie składni funkcji):

Kod
db_query(zapytanie, __FILE__)


Czy jest możliwość pominięcia drugiego parametru i zachowanie pierwotnej wartości w klasie dziennika? Sama stała w niej wywołana - wiadomo - zwróci nazwę pliku, w którym "przebywa" funkcja zapisująca.

Jakieś pomysły?
devnul
z użyciem stałej __FILE__ nie ma takiej możliwości jest za to pewna alternatywa w postaci funkcji debug_backtrace" title="Zobacz w manualu PHP" target="_manual która umożliwia przeprowadzenie tego typu "akcji". Radzę z nią jednak uważać
PiXel2.0
Stala __FILE__ zawiera zawsze sciezke do pliku w ktorym zostala podstawiona do instrukcji.

Nawet jak utworzysz takie pliki:

plik_1.php
  1. <?php
  2.  
  3. $file = __FILE__;
  4.  
  5. ?>


plik_2.php
  1. <?php
  2.  
  3. include 'plik_1.php';
  4. echo $file;
  5.  
  6. ?>


to gdy uruchomisz plik_2.php echo pokaze sciezke do plik_1.php nawet gdy kod byl dolaczany.
erix
Cytat
Stala __FILE__ zawiera zawsze sciezke do pliku w ktorym zostala podstawiona do instrukcji.

Manuala zdążyłem przeczytać, nie musisz dublować treści. Poza tym, Twoja odpowiedź jest powieleniem tego, co opisałem w problemie...

Cytat
Radzę z nią jednak uważać

Masz na myśli to: http://pl.php.net/manual/pl/function.debug...trace.php#75456
?
devnul
nie tylko - to raczej rzadki przypadek. Miałem raczej na myśli ostrożną i rozważną interpretację tego co funkcja zwraca. Nie zawsze jest to takie oczywiste jakby się wydawało.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.