Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> funkcja include i require
RedDoom
post 12.06.2010, 12:44:31
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 12.06.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post 12.06.2010, 12:50:51
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bastard13
post 12.06.2010, 13:19:14
Post #3





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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. }


--------------------
Go to the top of the page
+Quote Post
zend
post 12.06.2010, 13:37:24
Post #4





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował zend 12.06.2010, 13:38:55
Go to the top of the page
+Quote Post
bastard13
post 12.06.2010, 13:49:55
Post #5





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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. }


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 5.07.2025 - 20:17