Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja include i require
Forum PHP.pl > Forum > Przedszkole
RedDoom
Mam problem z tymi funkcjami.

Mam plik 'Draw.inc'
  1. <?php
  2. class Location {
  3. public $Left;
  4. public $Top;
  5. public function __construct() {
  6. $this->Top=0;
  7. $this->Left=0;
  8. }
  9. ?>


Nastepny plik 'control.inc'
  1. <?php
  2. include ('Draw.inc')
  3. class Draw {
  4. public $Location;
  5. public function __construct() {
  6. $this->Location=new Location;
  7. }
  8. ?>


i plik ktory uruchamiam 'test.php'
  1. <?PHP
  2. include('control.inc')
  3. $D=new Draw;
  4. $D->Location->Top=5;
  5. ?>

i otrzymuje taki komunikat
Fatal error: Class 'Location' not found in control.inc on line ...
czy ktos mi moze wytlumaczyc co robie zle
nospor
pliki *.inc nie są parsowane przez php. Takze ty sobie includujesz plik z klasą, ale on nie jest sparsowany przez php wiec klasa nie istnieje smile.gif
bastard13
Wrzuć sobie do głównego pliku (w twoim przypadku test.php) funkcję autoload i nie będziesz już musiał pamiętać o dodawaniu w pozostałych plikach:)
  1. $sciezka='sciezka_z_plikami_klas';
  2. function __autoload($class_name)
  3. { if(file_exists($sciezka.$class_name.'.php')) //sprawdzanie czy plik znajduje się w katalogu
  4. require($sciezka.$class_name.'.php');
  5. }
zend
Cytat(bastard13 @ 12.06.2010, 14:19:14 ) *
Wrzuć sobie do głównego pliku (w twoim przypadku test.php) funkcję autoload i nie będziesz już musiał pamiętać o dodawaniu w pozostałych plikach:)
  1. $sciezka='sciezka_z_plikami_klas';
  2. function __autoload($class_name)
  3. {
  4. if(file_exists($sciezka.$class_name.'.php')) //sprawdzanie czy plik znajduje się w katalogu
  5. require($sciezka.$class_name.'.php');
  6. }

Funkcja nie ma dostępu do $sciezka

Jeśli już coś to poczytaj o set_include_path

  1. function __autoload($class_name)
  2. { if(file_exists($class_name.'.php'))
  3. {require($class_name.'.php'); return true;}
  4. return false;
  5. }
bastard13
Masz racjęsmile.gif powinno być:
  1. define(SCIEZKA,'sciezka_z_plikami_klas');
  2. function __autoload($class_name)
  3. { if(file_exists(SCIEZKA.$class_name.'.php'))
  4. require(SCIEZKA.$class_name.'.php');
  5. }
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.