PHP名称空间&use未找到致命错误类,即使我已使用use指定了类

PHP名称空间&use未找到致命错误类,即使我已使用use指定了类,php,namespaces,fatal-error,classnotfound,Php,Namespaces,Fatal Error,Classnotfound,我在PHP中遇到了名称空间方面的问题。例如,我有一个这样的文件 namespace App\Models\Abstracts; abstract class Country{} namespace App\Models; use App\Models\Abstracts\Country; class City extends Country{} 然后是另一个这样的文件 namespace App\Models\Abstracts; abstract class Country{} na

我在PHP中遇到了名称空间方面的问题。例如,我有一个这样的文件

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

use App\Models\Abstracts\Country;

class City extends Country{}
然后是另一个这样的文件

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

use App\Models\Abstracts\Country;

class City extends Country{}
我总是得到最好的答案

致命错误:未捕获错误:类。。。在…中找不到

有人能帮我吗?
非常感谢。

为此,我建议您使用PSR PSR-4

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

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

跳转到本例中项目的根目录src的根目录,然后运行:

您将被要求填写一些项目信息,跳过它即可

作曲家初始化

将在根目录中创建一个名为composer.json的文件,让我们在其中配置psr-4

{
    "name": "root/project",
    "autoload": {
      "psr-4": {
        "App\\": "src/"
      }
    }
}
  
了解更多关于

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

例如:

等等

接下来,您应该通过以下方式生成自动加载

composer dump-autoload
最终的项目文件结构类似于:

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

<?php

use App\Models\City;

require __DIR__.'/vendor/autoload.php';

$city = new City();

var_dump($city);

我希望这对您有所帮助。

是否包含包含这些类的文件?你在用自动装弹机吗?使用不包括实际文件本身,这需要手动完成,比如:require_once'/path/to/Country.php';或者使用自动加载器。其用途只是能够直接引用类名,而无需每次都包含完整的命名空间。扩展国家,而不是扩展\App\Models\Abstracts\Contry