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) {
}
希望对你有所帮助。
我 运行 在 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) {
}
希望对你有所帮助。