PHP fatal error: " Class '...' not found in ... on line

PHP fatal error: " Class '...' not found in ... on line

我正在尝试为学校项目构建一个 API, 我想我一切都正确,但出于某种原因,代码没有读取使用行。

use repository\PDOPersonRepository;
use repository\PDOEventRepository;
use view\PersonJsonView;
use view\EventJsonView;
use controller\PersonController;

$user = 'root';
$password = '';
$database = 'wp1';
$pdo = null;

try {
$pdo = new PDO("mysql:host=127.0.0.1;dbname=wp1",
    $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE,
    PDO::ERRMODE_EXCEPTION);

$personPDORepository = new PDOPersonRepository($pdo);
$personJsonView = new PersonJsonView();
$personController = new PersonController($personPDORepository, $personJsonView);
$eventPDORepository = new PDOEventRepository($pdo);
$eventJSonView = new EventJsonView();
$eventController = new EventJsonView($eventJSonView, $eventPDORepository);

Fatal error: Class 'repository\PDOPersonRepository' not found in C:\xampp\htdocs\Werkpakket1\app.php on line 22

phpstorm 没有在代码中给出错误,所以我真的不明白为什么会这样

use 行包括 类 基于它们的 namespace 而不是它们的物理位置。它不同于 includerequire。如果 use 关键字要查找 类,则必须首先包含那些 类 的代码。

另一种方法是使用自定义 autoloader,它可以将命名空间与 类 的目录相匹配,以便仅在您需要 (use) 时自动加载它们.

换句话说,您上面的代码需要添加类似以下内容的前缀:

inculde 'Person.php';

该文件将包含如下内容:

namespace repository;
class PDOPersonRepository { ... }

您可以在一个文件中使用多个命名空间,但这不是常见的做法。