Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]problem z logicznym zrozumieniem kodu
Forum PHP.pl > Forum > Przedszkole
wpaski
Mam problem ze zrozumieniem następującej rzeczy, otóż mam taki kod w pliku index.php

  1. require 'libs/Bootstrap.php';
  2. require 'libs/Controller.php';
  3. require 'libs/View.php';
  4. $app = new Bootstrap();


w pliku Bootstrap.php mam:
  1. $file = 'controllers/'.$url[0].'.php';
  2. if(file_exists($file)) {
  3. require $file;
  4. }


i tam załóżmy ze $url[0] to index
w którym mam
  1. class Index extends Controller


no i nie rozumiem czemu ta klasa dziedziczy po klasie Controller która jest wrzucana dopiero PO Bootstrapie, ona dziedziczy po czymś, czego nie ma? czy w jaki sposób to działa, wg mojej logiki to Bootstrap.php powinien byc wyswietlony przed Controller.php i nie powinien umiec się do niego odwołać a jednak to działa, wytłumaczy mi to ktoś czemu tak jest:)
pozdrawiam.
bzeebzee
Dlaczego klasa ma nie dziedziczyć? Klasa Controller jest zaciągana do skryptu przed utworzeniem obiektu typu Bootstrap. Obiekty klas podrzędnych tworzone po uruchomieniu bootstrapu mogą dziedziczyć po klasie controller gdyż po dołączeniu jest do głównego pliku jest w zasięgu pozostałych klas smile.gif. Nie wiem czy dobrze ci to wytłumaczyłem
mortus
Obiekt klasy Bootstrap powstaje (linia 4) po wstawieniu klasy Controller (linia 2).
wpaski
napisałem takie coś:
  1. <?php
  2. class Czlowiek extends Rasa_Biala {
  3.  
  4. public $wiek = 40;
  5. public $imie = 'Andrzej';
  6.  
  7.  
  8. public function wypisz() {
  9. echo 'Człowiek ma: '.$this->wiek.'lat i nazywa się: '.$this->imie.'Rasa to: '.$this->rasa;
  10. }
  11.  
  12.  
  13. }
  14. $czlowiek = new Czlowiek;
  15. $czlowiek->wypisz();
  16.  
  17. class Rasa_Biala {
  18.  
  19. public $rasa = 'biała';
  20.  
  21. }
  22. ?>


Wynika z tego, że obojętnie gdzie bym ten obiekt wywołał to i tak będzie działać, wydaje mi się to troche niezrozumiałe, że obiekt odwołuje się do czegoś czego jeszsze nie ma? przynajmniej mi sie tak wydaje.
bzeebzee
Interpreter php najpierw wczytuje cały skrypt php później go interpetuje. Dlaczego to będzie działać ci dobrze. Nie możesz mówić że klasa "człowiek" nie odwołuje się do istniejącej klasy "rasa_biała" bo ona znajduje się w tym samym pliku. W przypadku gdy będzie się znajdować w innym a nie wczytasz go to wtedy kod uwali się 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.