Class PHP致命错误:";类'';在…中找不到。。。在线

Class PHP致命错误:";类'';在…中找不到。。。在线,class,pdo,classnotfoundexception,Class,Pdo,Classnotfoundexception,我正在尝试为学校项目构建一个API, 我想我一切都对了,但出于某种原因,代码没有读取使用行 use repository\PDOPersonRepository; use repository\PDOEventRepository; use view\PersonJsonView; use view\EventJsonView; use controller\PersonController; $user = 'root'; $password = ''; $database = 'wp1';

我正在尝试为学校项目构建一个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没有给出代码中的错误,所以我真的不明白为什么它会这样做使用
行包含基于类的类,而不是它们的物理位置。它不同于
include
require
。如果
use
关键字用于查找类,则必须首先包含这些类的代码

另一种方法是使用一个自定义的名称空间,它可以将名称空间与类的目录相匹配,这样只有在需要(
使用
)它们时才会自动加载它们

换句话说,上面的代码需要加上如下内容:

inculde 'Person.php';
namespace repository;
class PDOPersonRepository { ... }
其中该文件将包含以下内容:

inculde 'Person.php';
namespace repository;
class PDOPersonRepository { ... }

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

那么您使用的是什么自动加载机制…?看起来您尚未在文件中定义这些类。您需要包括某种自动加载机制,或者至少包括定义类的文件。我如何正确地做到这一点?当我“include‘repository\PDOPersonRepository’时,它会说路径找不到。你可以使用
include
命令告诉它在哪里可以找到另一个代码文件。这取决于你创建一个包含一些代码的文件,并让PHP读取它。对文件系统的基本了解会有所帮助(有趣)。