PHP 命名空间并使用 致命错误 class 即使我已经指定 class 也找不到

PHP namespace & use Fatal error class not found even when i already specified class with use

我 运行 在 PHP 中遇到命名空间问题。例如,我有一个这样的文件

namespace App\Models\Abstracts;
abstract class Country{}

然后是另一个这样的文件

namespace App\Models;

use App\Models\Abstracts\Country;

class City extends Country{}

我总是得到

Fatal error: Uncaught Error: Class ... not found in ...

谁能帮帮我? 非常感谢。

为此,我建议您使用 PSR (psr-4)。

首先,让我们创建一个文件结构如下:

现在让我们初始化 composer 来配置 psr-4。

跳转到项目根目录(本例为src的根目录),运行:

会要求填写一些项目信息,略过

composer init

会在根目录下创建一个名为composer.json的文件,让我们在里面配置psr-4。

{
    "name": "root/project",
    "autoload": {
        "psr-4": {
            "App\": "src/"
        }
    }
}

详细了解 psr-4

悬停,我们只是告诉 PSR 将名称 App 指向目录 src,然后子文件夹的名称应该是您命名空间中的姓氏。

示例:

App => src directory 
App\Models => src/Models directory

以此类推

接下来,您应该通过

生成自动加载
composer dump-autoload

最终的项目文件结构似乎是这样的:

我在根目录中创建了一个名为 index.php 的文件来测试我的代码,但首先,您应该需要我们刚才所做的配置生成的自动加载。

<?php  
  use App\Models\City;
  require __DIR__.'/vendor/autoload.php';
  $city = new City();
  var_dump($city);

结果:

/var/www/myfm/index.php:9:
class App\Models\City#3 (0) {
}

希望对你有所帮助。