您好,
我正在使用一个简单的模型 - 视图 - 控制器结构,我真的是新手。我会告诉你上下文:
我的index.php
获取了网址myweb.com/index.php?controller=access&action=login
,并要求base.php
显示页眉和页脚。
的index.php:
if ( isset( $_GET['controller']) && isset( $_GET['action'] ) ) {
$controller = $_GET['controller'];
$action = $_GET['action'];
} else {
$controller = 'error';
$action = 'notfound';
}
spl_autoload_register();
require_once('app/base.phtml');
base.php
放置页眉和页脚html代码,并且实例是一个名为Router
的类,根据控制器和操作重定向请求的网址。请注意,我正在使用spl_autoload_register();
自动加载我的课程。
应用程序/的 base.php:
<!-- header code here -->
use src\model\Router;
$router = new Router();
$router->callView($controller, $action);
<!-- footer code here -->
的src /模型/的 Router.php:
namespace src\model;
class Router
{
function callView($controller, $action)
{
// code here that calls a controller to show a view
}
}
问题是,当我需要来自Router
的{{1}}时,我收到此错误:
base.php
我的道路是正确的,也许我忘了什么。当我从其他类中使用'名称空间'时,自动加载器会工作,但是当我从一个简单的php文件中使用它时,它就无法工作。
结构如下:
Fatal error: spl_autoload(): Class src\model\Router could not be loaded in /var/www/myweb/app/base.php on line 59
PD:
答案 0 :(得分:1)
我修改了spl_autoload_register一点点
spl_autoload_register(
function($className) {
// echo "register: " . $className . "<br>\n";
$fileName = __DIR__ . '/' . str_replace('\\', '/', $className) . ".php";
// $fileName = __DIR__ . '\\' . $className . ".php"; // for windows
if(file_exists($fileName))
{
require_once($fileName);
}
else
{
echo "$fileName not found<br>\n";
}
}
);