自动加载器无法在简单的 PHP 文件中工作,而不是 Class 文件

Autoloader not working in a simple PHP file, without being a Class file

嗨,

我正在使用一个简单的模型-视图-控制器结构,我真的是新手。我会告诉你上下文:

我的 index.php 使用 url 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 代码,实例 a class 调用 Router 根据 控制器重定向请求 和 url 的 动作 。请注意,我正在使用 spl_autoload_register(); 自动加载我的 classes.

app/base.php:

<!-- header code here -->

     use src\model\Router;
     $router = new Router();
     $router->callView($controller, $action);

<!-- footer code here -->

src/model/Router.php:

namespace src\model;

class Router 
{
   function callView($controller, $action)
   {
     // code here that calls a controller to show a view
   }
}

问题是,当我从 base.php 请求 Router 时,我得到这个错误:

Fatal error: spl_autoload(): Class src\model\Router could not be loaded in /var/www/myweb/app/base.php on line 59

我觉得我的路径是正确的,也许我忘记了什么。当我从其他 classes 'use' 'namespaces' 时,自动加载器工作,但当我从一个简单的 php 文件使用它时,自动加载器不工作。

结构如下:

myweb
  |- app/
  |   |-- view/
  |   |   |-- login.php
  |   |-- base.php
  |
  |- src/
  |   |-- controller/
  |   |   |-- AccessController.php
  |
  |- model/
  |   |-- Router.php
  |
  |- index.php
  |- .htaccess

PD:

我修改了 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";
        }
    }
);