Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Informacja z jakiego pliku została wywołana funkcja
Forum PHP.pl > Forum > PHP
yew
Cześć,

Czy w PHP jest możliwość otrzymania informacji kto wywołał wybraną funkcję np:

plik /test.php
  1. function test()
  2. {
  3. echo tego_szukam();
  4. }


oraz w pliku:
/folder/plik.php wywołamy:
  1. require('../test.php');
  2. test();


to wyświetli mi się informacja:
/folder/plik.php

Innymi słowy, chciałbym się dowiedzieć kto/jaki plik wywołał obecną funkcję bez przekazywania tej informacji w argumencie funkcji.

Z góry dzięki za odpowiedź.
t4keda
http://php.net/manual/en/reserved.variables.server.php
Chyba 'SCRIPT_FILENAME' jest tym czego szukasz
yew
Nie do końca, bo /folder/plik.php może być też gdzieś dołączony (np w /index.php).

SCRIPT_FILENAME podaje adres pliku od którego zaczęło się przetwarzanie, a ja chcę tylko wiedzieć jaki plik wywołuję daną funkcję w środku tej funkcji (nie wiem czy to jest możliwe w php smile.gif)
czachor
hm, może __FILE__ ?
Crozin
Musiałbyś użyć debug_backtrace i wyciągać z niego te dane. Jest jednak jedno zasadnicze pytanie: po jaką cholerę Ci coś takiego?
yew
Robię sobie taki mały class loader funkcja ładująca wygląda mniej więcej tak:

import(classpath);

Aby całość działała muszę podawać pełną ścieżkę, a czasami jest tak, że kasa implementuje interfejs, który jest w tym samym katalogu i ścieżka mogła by być względna do tej klasy jeśli import jest w tej klasie:

import(interface/class)

Tylko aby móc zrobić require w funkcji import, muszę mieć pełną ściężkę, skąd została wywołana aby móc stworzyć pełny class path.

debug_bactrace odpada bo to nie do tego służy.

W sumie potrzebne mi to tylko po to aby łatwiej refaktorować kod oraz uprościć zapis, ale coś czuję, że tak się nie da...
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.