Ich versuche einen Frontcontroller in PHP zu schreiben.Klasse nicht gefunden
Hier ist mein Code:
<?php
require_once('Controller/LoginController.php');
require_once('View/LoginView.php');
require_once('Model/UserModel.php');
class FrontController
{
private $controller;
private $view;
public function __construct(Router $router, $routeName, $action = null)
{
$route = $router->getRoute($routeName);
$modelName = $route->model;
$controllerName = $route->controller;
$viewName = $route->view;
$model = new $modelName;
$this->controller = new $controllerName($model);
$this->view = new $viewName($routeName, $model);
if (!empty($action)) $this->controller->{$action}();
}
public function output() {
if (!empty($this->view))
{
return $this->view->output();
}
}
}
Wenn ich in einer Route Objekt mit Eigenschaften, vorbei wie folgt:
route-> model = 'UserModel'
route-> view = 'LoginView'
route-> controller = 'LoginController'
PHP sagt mir, dass Klasse UserModel
kann nicht gefunden werden.
Wenn ich jedoch die oben mit statischen Ausdrücke ersetzen:
$model = new UserModel();
$this->controller = new LoginController();
$this->view = new LoginView();
der Code funktioniert gut, das sagt mir, vermutlich, dass die Klassen für die Verwendung in meinem Code zur Verfügung stehen.
Ich bin verloren. Gibt es etwas, das ich übersehe?
Weitere Untersuchungen mit diesem Stück Code
if (!class_exists("UserModel")) die("No UserModel");
mir sagen, dass die Klasse nicht existiert. Wie ist es dann möglich, dass ich es mit new UserModel()
konstruieren kann und wie kann ich es beheben?
Ich denke, es sollte '$ model = new $ modelName();' Fügen Sie die Klammern – mseifert
@mseifert: Nein, das ist es nicht. – Fang