我的PDO结果不适用于显示

时间:2015-11-11 18:28:34

标签: php object pdo

我测试了一个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>';
 }
任何人都可以帮助我。感谢

1 个答案:

答案 0 :(得分:0)

id和contenu是私有变量,您无法直接访问它们。您必须使用News类

中定义的一些公共getter方法
public function getId(){
    return $this->_id;
}

然后通过getter方法获取数据,如$news->getId();

希望这个帮助