PHP致命错误:“类'......'找不到......在线

时间:2017-05-21 18:48:57

标签: class pdo classnotfoundexception

我正在尝试为学校项目构建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不会在代码中出错,所以我真的不明白为什么会这样做

1 个答案:

答案 0 :(得分:1)

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

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

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

inculde 'Person.php';

该文件包含的内容如下:

namespace repository;
class PDOPersonRepository { ... }

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