在 PHP 中使用 composer autoload 的命名空间

Namespace using composer autoload in PHP

我正在尝试使用 psr-4 和 composer 实现自动加载功能,但我收到此错误,即使我已经在索引中需要它。请查看下面的错误和代码:

错误

Fatal error: Class 'Blog\Classes\Database\Connection' not found in C:\wamp\www\blog-oop\index.php on line 7

代码

composer.json

{
    "autoload": {
        "psr-4": {
            "Blog\": "app/classes/Database"
        }
    }
}

Connection.php

<?php

namespace Blog\Classes\Database;

class Connection{


}

index.php

<?php

require "vendor/autoload.php";

use Blog\Classes\Database\Connection;

$connection = new Connection;

结构

>app 
  >classes
    >Database
      >Connection.php

在你的composer.json

"Blog\": "app/classes/Database" 

应该是

"Blog\": "app" 

因为命名空间充当查找 class

的路径

我认为错误发生在作曲家json

而不是

"Blog\": "app/classes/Database"

应该是

"Blog\": "app/"

我的composer.json测试

{
    "name": "test",
    "description": "Test",
    "autoload": {
        "psr-4": {
            "Blog\": "app/"
        }
    }
}

app/Classes/Database/Connection.php

<?php

namespace Blog\Classes\Database;

class Connection {
    public function __construct()
    {
        print_r('Connection class was called');
    }
}

结果:

Connection class was called