私はPHPでフロントコントローラを作成しようとしています。ここでクラスが見つかりません
は私のコードです:
<?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();
}
}
}
次のように私はプロパティを持つルートオブジェクトに渡しているとき:
route-> model = 'UserModel'
route-> view = 'LoginView'
route-> controller = 'LoginController'
PHPクラスUserModel
が見つからないことを私に伝えます。
私は、静的な表現で上記を置き換える場合は、:
$model = new UserModel();
$this->controller = new LoginController();
$this->view = new LoginView();
コードは、おそらくクラスが私のコードで使用するために利用可能であることを私に語った、うまく動作します。
私は迷っています。私は見落としているものはありますか?コード
if (!class_exists("UserModel")) die("No UserModel");
のこの作品で
さらなるお問い合わせは、クラスが存在しないことを教えてください。 new UserModel()
でそれをどのように構築することができますか?どのように修正できますか?編集 - -
申し訳ありませんが、私は誤解falseを返す場合
私は '$ model = new $ modelName();'とするべきだと思います。 – mseifert
@mseifert:いいえ、そうではありません。 – Fang