[PHP - MVC] - Problem z ładowaniem modeli

Witam, mam problem z ładowaniem modeli w MVC. Problem pojawia się wtedy gdy dodaję model do kontrolera.

 

Oto kod z pliku, który ładuje kontrolery:

<?php class Core { function __construct() { isset($_GET['url']) ? $url = $_GET['url'] : $url = 'index'; $url = rtrim($url, '/'); $url = explode('/', $url); $file = 'controllers/' . $url[0] . '_controller.php'; if(file_exists($file)) { require $file; $controller = new $url[0]; echo 'przed dodaniem modelu'; // to wypisuje PHP $controller->loadModel($url[0]); // $url[0] - np. adres-strony.pl/contact = $url[0] == 'contact' echo 'po dodaniu modelu'; // tego już nie... if(isset($url[2])) { $controller->$url[1]($url[2]); } else { if (isset($url[1])) { $controller->$url[1](); } else { $controller->index(); } } } else { echo 'This site does not exists.'; } } }

 

oto kod kontrolera głównego :

<?php class Controller { public function __construct() { $this->view = new View(); } public function loadModel($name) { $path = 'models/' . $name . '_model.php'; if(file_exists($path)) { require $path; $this->model = new $name(); } } }

 

a to przykładowy kontroler (index):

<?php class Index extends Controller { public function __construct() { parent::__construct(); } public function index() { $view->view->render('index/index'); // szablonu także nie ładuje. } public function detail() { $view->view->render('index/detail'); // szablonu także nie ładuje. } }

 

no i jeszcze przykładowy model (index):

<?php class Index extends Model { function __construct() { echo 'jestem modelem, który się nie ładuje'; } }

 

No i się meczę z tym od 2 dni i nie znajduję sposobu. W załącznikach dodaję jeszcze .zip’a z całym ‘projektem’. 

mvc-blog.zip

Nie możesz mieć 2 klas o takiej samej nazwie (Index).

Użyj namespaców (albo pre/suffixów w nazwach klas - choć to rozwiązanie to na dzień dzisiejszy to zuo).

W przypadku białej strony /var/log/apache2/error.log Twoim przyjacielem jest :slight_smile:

Po pierwsze (najważniejsze) wstaw sobie

error_reporting(E_ALL);

w pierwszej linii (po znaczniku otwierającym) pliku index.php.

 

Jak już będą Ci się wyświetlać błędy, to parser powie jasno i wyraźnie, że nie możesz ponownie zadeklarować klasy o tej samej nazwie. Nie podpowiem które się tak samo nazywają, bo komunikat błędu jasno o tym mówi.

Taka głupota  :x A dodanie error_reporting(E_ALL); i tak nic nie pokazał. Dzięki już działa.

Nie wyobrażam sobie developerki na takim serwerze

ini_set('display_errors', true);

lub w htaccess

php_flag display_errors on

Jak było na off to ci nie pokazał.