我在 PHP 中的名称空间方面遇到了麻烦。例如我有一个这样的文件
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-4 https://www.php-fig.org/psr/psr-4/examples/
要悬停,我们只是告诉 PSR 将名称 App 指向目录 src,然后子文件夹的名称应该是您的命名空间中的姓氏。
Example:
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);
Result:
/var/www/myfm/index.php:9:
class App\Models\City#3 (0) {
}
我希望这可以帮助你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)