Php 自动加载名称空间

Php 自动加载名称空间,php,model-view-controller,autoload,Php,Model View Controller,Autoload,我正在为一个简单的网站创建自己的MVC框架,我想使用名称空间,但我不知道如何自动加载它们。以下是我迄今为止所做的尝试: 我有一个具有自动加载功能的init.php文件: spl_autoload_register(function($class){ $file = __DIR__ . '/../' . str_replace('\\', '/', $class) .'.php'; echo $file; if (file_exists($file)) {

我正在为一个简单的网站创建自己的MVC框架,我想使用名称空间,但我不知道如何自动加载它们。以下是我迄今为止所做的尝试:

我有一个具有自动加载功能的
init.php
文件:

    spl_autoload_register(function($class){
    $file = __DIR__ . '/../' . str_replace('\\', '/', $class) .'.php';
    echo $file;
    if (file_exists($file)) {
        require_once $file;
        echo 'yes';
    }

    use App\Core\App as App;

    $app = new App;
此代码返回“是”,因此它可以定位应用程序文件。。但它也返回一个致命错误:
D:\xampp\htdocs\MVC\App/。/App/Core/App.phpyes
致命错误:在第28行的D:\xampp\htdocs\MVC\App\init.php中找不到类“App\Core\App”
第28行是
$app=新应用

以下是我如何命名我的应用程序文件:

    <?php

    namespace App\Core\App;

    class App 
    {
    .....

你知道为什么吗?

与其自己制作自动加载器,不如使用composer内置的自动加载器。只需在
composer.json
文件中添加以下片段,即可完成:

"autoload": {
  "psr-4": {
    "": "dir_where_namespaces_start...usually_src"
  }
}

此外,您不能真正创建和“mvc框架”,因为mvc架构是应用程序代码实现的,而不是框架。

它可能是目录路径,是
D:\xampp\htdocs\MVC\App\App\Core\App.php
?不是
D:/xampp/htdocs/MVC/App/Core/App.php
,然后就像Chris说的那样,你需要更改名称空间或修复目录结构。它在呼应它是什么
D:\xampp\htdocs\MVC\App/./App/Core/App.php
类App的名称空间应该是
namespace-App\Core如果您的命名空间是
命名空间App\Core\AppApp
,它应该是
$App=newapp\Core\App\App()
;你能看出这有多让人困惑吗?这是天才,工作起来很有魅力!我不知道你可以和作曲家一起做这件事。
"autoload": {
  "psr-4": {
    "": "dir_where_namespaces_start...usually_src"
  }
}