Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]własny includeX($x) i obsługa błędów..
Forum PHP.pl > Forum > Przedszkole
zwiedzam
  1. <?php
  2. function includeX($plik) {
  3. include($plik);
  4. }
  5. ?>


Chcę stworzyć własną funkcję, dzięki której będę miał większą kontrolę nad przebiegiem doczepiania plików.

Problem pojawia się jednak w momencie, gdy pliku brak, bo info o nieistniejącym pliku dotyczy miejsca gdzie znajduje się funkcja (plik w którym definiuję funkcję, linia z include()), a chciałbym wiedzieć raczej o miejscu gdzie ta funkcja została wywołana (plik wywołujący, linia z includeX()).
Z tego co wiem - można od biedy przekazywać parametr __FILE__, __LINE__ etc, podczas wywoływania funkcji, ale nie chodzi przecież o to by wypisywać długie linie kodu, tam gdzie właściwie chodzi tylko o jeden parametr - ścieżkę do pliku jaki chcę dołączyć.

Czy jest więc możliwe pobranie informacji o wywołującym w jakiś przystępny sposób ?
Spawnm
albo zwykły komunikat brak pliku $plik, albo zabawa z try{}
zwiedzam
Zwykły komunikat niestety nie wystarczy - sporo powiązań klasowych, chcę wiedzieć szybko dokładnie która klasa > metoda i zbadać dlaczego coś jest nie tak. Co do obsługi Exceptions - ok, ale jak ?

  1. <?php
  2. try {
  3. if (!include($file)) throw new Exception('tresc');
  4. }
  5. catch (Exception $e) {
  6. //i co ? $e->getCO ?;
  7. }
  8. ?>


Próbowałem już bez throw, niestety nadal pojawiał się komunikat, którego nie chcę i nie kierowało mnie do bloku catch, a nawet jak się udało mniej więcej tak j.w. to jak pobrać dane dot. pliku nadrzędnego, który wywołał funkcję ?
wookieb
http://php.net/debug_backtrace
Jeżeli nie ma byc komunikatu o bledzie wystarczy ze dasz przed funkcja @
  1. <?php
  2. @include($plik);
  3. ?>


Dodatkoo mozesz uzyc http://php.net/file_exists
Spawnm
co do //i co ? $e->getCO ?;
$e->getMessage()
http://pl.php.net/manual/pl/language.exceptions.php
janusz85
Sprawdź, czy plik istnieje, jak nie to wyrzuć wyjątek.

Funkcja wywołująca niech używa tej Twojej w ramach try i tak aż do samego szczytu drzewa wywołań.
zwiedzam
@ - wolę używać w includeX - jeden wpis do wszystkich includów za jednym zamachem.
try-catch w funkcjach wywołujących to zawsze coś, ale daje więcej linii kodu zamiast jednego słowa + drugie w nawiasie.
Hmm.. .będzie trzeba się na coś zdecydować.

thx za odp.
erix
Cytat
try-catch w funkcjach wywołujących to zawsze coś, ale daje więcej linii kodu zamiast jednego słowa + drugie w nawiasie.

Ale to normalna struktura kontrolna. ;] Przecież możesz np. wypluwać wyjątek z funkcji:

  1. <?php
  2. function fx(){
  3. throw new Exception();
  4. }
  5.  
  6. //...
  7.  
  8. try{
  9.  fx();
  10.  var_dump($GLOBALS);
  11. }catch(Exception $ex){}
  12. ?>

I tu var_dump" title="Zobacz w manualu PHP" target="_manual się nie wykona.
zwiedzam
Znalazłem ; )

Jak by ktoś szukał rozwiązania podobnego typu - brzmi: debug_backtrace(); tongue.gif
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.