【发布时间】:2020-05-31 12:53:36
【问题描述】:
我正在学习 PHP,现在我正在展示一些关于 PDO 的文章。我在使用 PDO::FETCH_CLASS 和命名空间时遇到了一些问题。
我的文件夹架构:
class/
- Post.php
layout/
-articles/
--articles.php
public/
-index.php (contains my router)
Post.php
namespace App\Articles;
class Post {
private $id;
private $name;
private $content;
private $date;
public function getId()
{
return $this->id;
}
public function getName()
{
return $this->name;
}
public function getContent()
{
return $this->content;
}
public function getExcerpt()
{
$res = $this->content;
return (strlen($res) > 150) ? substr($res, 0, 150) . '...' : $res;
}
public function getDate()
{
return $this->date = date('d-m-Y', $this->date);
}
}
data.db 只包含四列:id、name(text)、content(text)、created_at(int)
我遇到问题的部分:
use App\Articles\Post;
$pdo = new PDO('sqlite:../data.db', null, null, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ
]);
try {
$query = $pdo->query('SELECT * FROM posts');
$posts = $query->fetchAll(PDO::FETCH_CLASS, 'Post');
} catch (PDOException $e) {
$error = $e->getMessage();
}
我尝试了不同的输入,而不是 'Postlike
'App\Articles\'
'App\Articles\Post'
'App\Articles\::POST'
...
我无法让它与 namepsace 一起工作。
它适用于require '../class/Post.php'。
这个问题有解决方案还是我应该只使用 require ?
【问题讨论】:
-
@Dlk 我试过了,但还是找不到课程。
-
@Dharman 我不太明白这个帖子。我试过了,但还是不行。在我的自动加载器中,我有 psr-4 到 ```"App\\": "class/"
-
不工作是什么意思?向我们展示您的 Post 类并向我们展示帖子数据库架构。
-
@Dharman 我已经添加了帖子类
标签: php pdo namespaces