即使我已经指定了使用类,也找不到 PHP 命名空间和使用 fatal error 类

标签 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{}
我总是得到

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


谁能帮我?
多谢。

最佳答案

为此,我建议您使用 PSR (psr-4)。
首先,让我们创建一个文件结构如下:
enter image description here
现在让我们初始化 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
最终的项目文件结构似乎是这样的:
enter image description here
我在根目录中创建了一个名为 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) {
}
我希望这可以帮助你。

关于即使我已经指定了使用类,也找不到 PHP 命名空间和使用 fatal error 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62485522/

相关文章:

php - 如何在moodle主题设计中定义自定义 block 区域?

php - 从 mysql 数据库写入 html 时遇到问题

python - 在python中导入全局命名空间

android - 我的应用程序在致命故障中在模拟器中崩溃

php - 为什么我的应用程序 (Android) 和网站 (PHP) 的相同帐户无法获得相同的 Facebook ID?

php - 通过跟踪号检测承运人的脚本

c++ - 关于重载解析的奇怪编译错误

sql-server - sp_xml_preparedocument 和 Namespace 的使用。我在 SQL Server 2012 中收到错误 "XML parsing error: Reference to undeclared namespace prefix: ' a'。

PHP:触发 fatal error ?

swift - 翻转卡导致 swift fatal error