我正在尝试为学校项目构建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不会在代码中出错,所以我真的不明白为什么会这样做
答案 0 :(得分:1)
use
行包括基于namespace而不是其实际位置的类。它与include
或require
不同。如果use
关键字要查找类,则必须首先包含这些类的代码。
另一种方法是使用自定义autoloader,它可以将命名空间与类的目录匹配,这样只有在需要(use
)它们时才会自动加载它们。
换句话说,上面的代码需要添加如下内容:
inculde 'Person.php';
该文件包含的内容如下:
namespace repository;
class PDOPersonRepository { ... }
您可以在单个文件中使用多个名称空间,但这不常见。