Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] includowanie
maximus.j
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 28.12.2011

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


Witam ...

Od pewnego czasu się zastanawiam nad jedna rzeczą a mianowicie:
W pliku index.php mam:

  1. include ('lib/db.class.php'); // tu jest plik do obsługi mysql ..
  2. include ('lib/template.class.php'); // a tu klasa szablonowa ...
  3.  
  4.  
  5. $szablon = new template; // np tworze sobie obiekt tej klasy
  6.  


a teraz plik db.class.php :
  1. class db
  2. {
  3. ....
  4. }


a teraz plik template.class.php :
  1. include ('lib/db.class.php'); // tu jest plik do obsługi mysql ..
  2.  
  3. class template extends db
  4. {
  5. ...
  6. }


pytanie to jak unikać takiego zapetlenia ? Jak to dołączanie plików wygląda w zaawansowanej strukturze ?
Jestem początkujący - widać słychać - i chciałbym aby koś mi wytłumaczył idee (IMG:style_emoticons/default/ohno-smiley.gif)




Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Poczytaj o autoloaderach
http://php.net/manual/en/language.oop5.autoload.php
Go to the top of the page
+Quote Post
maximus.j
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 28.12.2011

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


Chodzi mi o taką sytuacje jeżeli chciałbym zbudować klasę user.class.php (wyświetlanie formularza do rejestracji, formularza logowania itp) i includowałbym tu plik: template.class.php a potem ją odziedziczył:
  1.  
  2. // user.class.php
  3.  
  4. include ('template.class.php');
  5.  
  6. class user_view extends template
  7. {
  8. # tu działania z klasa rodzicem
  9. }
  10.  


a w pliku index.php:
  1. include ('template.class.php'); # includuje tą klase
  2. include ('user.class.php'); # includuje tą klase + mam tu zainkludowany plik template.class.php
  3.  
  4. # działana na szablonach
  5. $body = new template;
  6.  
  7.  


to czy w pliku index.php nie będę miał 2x template.class.php (IMG:style_emoticons/default/questionmark.gif)

Go to the top of the page
+Quote Post
by_ikar
post
Post #4





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


IMO nie powinieneś używać include, ponieważ w przypadku braku takiego pliku (błędna ściezka, lub brak uprawnień odczytu) dostaniesz notica, a sam skrypt poleci dalej. Zamiast include używaj requiere, żeby nie dołączyć dwa razy tego samego pliku, używasz requiere_once, lub include_once. Są nieco wolniejsze, ale jak chcesz mieć pewność że dany plik zostanie wczytany tylko raz, to używasz reuiere_once lub include_once.

Druga sprawa, jest taka że twoja klasa usera nie powinna dziedziczyć klas template i na odwrót. Poczytaj o wzorcach projektowych, ostatnio popularne dzięki symfony 2 staje się dependency injection. Instancje klasy wstrzykujesz poprostu do innej klasy.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 26.08.2025 - 14:15