我测试了一个tuto。我是php的新手。 我在news.php中有一个实体,一个管理器和一个显示结果的页面。 我用PDO执行查询。我有结果,但不能显示它们。
实体就是这样:
class News {
private $_id;
private $_titre;
private $_contenu;
public function id()
{
return $this->_id;
}
public function titre()
{
return $this->_titre;
}
public function contenu()
{
return $this->_contenu;
}
public function setId($id)
{
if(!is_int($id))
throw new Exception('L\'id n\'es pas de type int');
$this->_id = $id;
}
public function setTitre($titre)
{
if(!is_string($titre))
throw new Exception('Le titre n\'es pas de type string');
$this->_titre = $titre;
}
public function setContenu($contenu)
{
if(!is_string($contenu))
throw new Exception('Le contenu n\'es pas de type string');
$this->_contenu = $contenu;
}
}
我的新闻经理:
class newsManager
{
private $_db;
const SELECT_5LAST_NEWS = 'SELECT * FROM news ORDER BY id DESC LIMIT 0,5';
public function select5News()
{
$query = $this->_db->query(self::SELECT_5LAST_NEWS);
$query->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'News');
return $query->fetchAll(PDO::FETCH_CLASS, 'News');;
}
}
然后我测试我的观点:
require 'classes/newsManager.php';
$newsmngr = new newsManager(); $req = $newsmngr->select5News();
foreach ($req as $u) {
print_r($u); }
那就是:
News Object ( [_id:News:private] => [_titre:News:private] =>
[_auteur:News:private] => [_contenu:News:private] =>
[_dateAjout:News:private] => [_dateModif:News:private] => [id] => 3
[auteur] => howsDoingThis [titre] => where i am.... [contenu] => Lorem
ipsum dolor sit amet,(...)
我的结果已经填满,但是当我尝试显示时,该代码没有任何反应:
foreach($req as $news)
{
echo '<section><p class="titre"><a href="administration.php?id='.$news-id().'">'.$news->titre().'</a></p>';
echo '<p class="description">'.$news->contenu().'</p></section>';
}
任何人都可以帮助我。感谢
答案 0 :(得分:0)
id和contenu是私有变量,您无法直接访问它们。您必须使用News类
中定义的一些公共getter方法public function getId(){
return $this->_id;
}
然后通过getter方法获取数据,如$news->getId();
希望这个帮助