問題の概要
私が作成している MVC フレームワークでのルーティングに小さな問題があります。コードは機能するはずですが、要求された uri を配列に分割して文字列変数に割り当てる方法にどこか問題があります。最初に発生したすべてのエラーを排除したので、コントローラーのインスタンス化に進みました。これが得られたものです。
エラーログ
Class name must be a valid object or a string in /home2/canforce/public_html/index.php on line 23
index.php
//analyze request
$request = new Request(); //breaks up the uri into an array
//routing
$router = new Router(array($request)); //routes the requested uri
$router->route();
//instancialize and execute the controller
$controller = new $router->getController();
$method = $router->getMethod();
$controller->$method();
Request.php
class Request {
public function __construct() {
//separates the uri into an array
$uri = explode('/',$_SERVER['REQUEST_URI']);
$uri = array_filter($uri);
//stores the requested controller from the uri
if($uri[0]!="") {
$request['controller'] = $uri[0];
}
else {
$request['controller'] = "home";//defaults to home
}
//stores the requested method from the uri
if(isset($uri[1])) {
$request['method'] = $uri[1];
}
else {
$request['method'] = "index";//defaults to index
}
//stores the requested arguments in array form
$count = count($uri);
$j=0;
for($i=2;$i<$count;$i++) {
$request['args'][j] = $request[i];
$j++;
}
return($request);
}
}
Router.php
class Router {
private $language = NULL;
private $controller;
private $view;
private $method;
private $args = NULL;
public function __construct($request) { //given the requested uri in array form, stores it in local variables
$this->controller = $request['controller'];
$this->method = $request['method'];
$this->args = $request['args'];
}
public function route() { //put the requested uri into forms we can deal with
}
public function getLanguage() {
return $this->language;
}
public function getController() {
return $this->controller;
}
public function getView() {
return $this->view;
}
public function getMethod() {
return $this->method;
}
public function getArgs() {
return $this->args;
}
}
どんな助けでも大歓迎です!