Jestem początkujący jeśli chodzi o budowanie aplikacji internetowych w PHP, właściwie to jeszcze nigdy nie miałem okazji żadnej zbudować... mniejsza z tym. Chciałem zrobić zastosować sobie bardzo prościutki w celach edukacyjnych wzorzec MVC więc wziąłem się za to tak:
STRUKTURA KATALOGÓW:
http://sites.google.com/site/carlvanersten/cve
I teraz zawartość kilku plików po koleji:
public/index.php:
<?php set_include_path(get_include_path() . PATH_SEPARATOR . '../library/' . PATH_SEPARATOR . '../controllers/'); function __autoload($class) { require_once $filepath; } class FrontController { public function dispatch() { $cont = $_GET['controller']; $action = $_GET['action']; $controller = new $class(); $controller->$action(); } } $fc = new FrontController; $fc->dispatch();
library/Abstract/Controller.php:
<?php class Abstract_Controller { public function index() { } }
oraz controllers/Index.php
<?php class Index extends Abstract_Controller { public function index() { } }
i dziwnosc sytuacji polega na tym, że w tej sytuacji metoda index() w klasie Index extends Abstract_Controller w rezultacie na ekranie daje "A to z IndexaA to z Indexa" <--- tak właśnie tak "podwójnie" gdy zmienie nazwe tej metody tak by mogla sie pokazac metoda index z dziedziczonej klasy, zeby ta jej nie naspisywala to normalnie sie wyswietla "To jest z Abstracta", wiec moje pytanie brzmi: Dlaczego tak podwójnie wywołuje się ta metoda nadpisująca metodę z klasy bazowej??