Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]"Własna" funkcja include
Forum PHP.pl > Forum > Przedszkole
dk1342
Chce sobię ułatwić życie, miejsce w pliku i "przejrzystość" nie sprawdzając co plik czy on istnieje (np. mam w pliku na samej górze kilka takich linijek):
  1. if(file_exists('x.php')){include('x.php');}else {die('Plik x.php nie istnieje!');}
  2. if(file_exists('x.php')){include('x.php');}else {die('Plik x.php nie istnieje!');}
  3. if(file_exists('x.php')){include('x.php');}else {die('Plik x.php nie istnieje!');}
  4. if(file_exists('x.php')){include('x.php');}else {die('Plik x.php nie istnieje!');}
  5. [...]


Troche nie ładnie to wygląda i zajmuje dużo miejsca. więc postanowiłem sobie napisać funkcje np.
cos_include('x.php');
i kod by od razu ładniej i krócej wyglądał
  1. cos_include('x.php');
  2. cos_include('x.php');
  3. cos_include('x.php');
  4. cos_include('x.php');


Gdy pomyślałem że to będzie prosta sprawa na końcu zdziwiłem się, fakt zapomniałem ze zmienne z poza funkcji nie "wychodzą" i zmiennych z plików nie czytało.

Moja funkcja:
  1. function cos_include($plik)
  2. {
  3. if(file_exists($plik))
  4. {
  5. include($plik);
  6. }
  7. else
  8. {
  9. die('Nie znaleziono pliku '.$plik);
  10. }
  11. }

no i wywołuje np. wczytuje konfig i chce wyświetlić np. zmienną która jest w tym pliku $prefix
  1. cos_include('konfiguracja.php');
  2. echo $prefix;

I nic nie zwraca, pusto, a gdy dałem w funkcji echo np.:
  1. function cos_include($plik)
  2. {
  3. if(file_exists($plik))
  4. {
  5. include($plik);
  6. echo $prefix;
  7. }
  8. else
  9. {
  10. die('Nie znaleziono pliku '.$plik);
  11. }
  12. }

to mi wyświetliło, więc plik itp. poprawnie ładuje tylko te zmienne nie wychodzą na zewnątrz funkcji.

Czytałem o global ale dowiedziałem się tylko jak wprowadzić zewnętrzną zmienną do funkcji.
Da radę to jakoś zrobić ? Co myślicie o tym.

ps. bez zbędnych komentarzy "po co mi taka funkcja" itp., po prostu ułatwia mi bo nie muszę już sprawdzać czy plik istnieje.
bastard13
możesz zrobić tak
  1. include(sprawdz($plik));

funkcja:
  1. function sprawdz($plik)
  2. { if(file_exists($plik)) return $plik;
  3. else return 'blad.php';}

i jakaś strona blad.php informująca o braku pliku.
Ewentualnie jeżeli nie chcesz żadnego dodatkowego pliku to możesz dać @ przed includem, wtedy wytłumi ci błędy i możesz ustawić zamiast return 'blad.php' - return 0.
Quantum
a tutaj alternatywne sposoby:

  1. file_exists($filename = 'plik.php') AND include $filename;
  2.  
  3. // lub
  4.  
  5. include file_exists($filename = 'plik.php')? $filename : exit;
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.