Это первый раз, когда я использую ООП с PHP 5 .. так что это моя проблема ..
У меня есть файл disp.php, который содержит класс с именем class disp (модель в MVC)
<?php class disp{ public $n_pages; public $current_page; private $cmd2; /***************SQL command generator*******************/ private function getCmd2($cmd1,$id,$first_entry,$perpage,$tri){ $cmd2=str_replace('COUNT(*)','*',$cmd1); $cmd2=$cmd2.' ORDER BY '.$id.' '.$tri.' LIMIT '.$first_entry.','.$perpage; return $cmd2; } /********************Items display******************/ function dispItems($cmd1,$id,$perpage,$tri){ require('global/connection.inc.php'); try{ foreach($pdo->query($cmd1)as $r){ $n_pages=ceil($r[0]/$perpage); if (isset ($_GET['pg'])){ $current_page=intval($_GET['pg']); if ($current_page>$n_pages){ $current_page=$n_pages; } if ($current_page<=0){ $current_page=1; } } else{ $current_page=1; $_GET['pg']=1; } } $i=1; $first_entry=($current_page-1)*$perpage; $objet=new disp(); $cmd2=$objet->getCmd2($cmd1,$id,$first_entry,$perpage,$tri); $data=array(); $i=0; foreach($pdo->query($cmd2) as $r){ $data[$i]=$r; $i++; } return $data; }catch(PDOException $e){} } }
это файл news.php (контроллер в MVC):
require MODELS_DIR.'disp.php'; $objet=new disp(); $news=$objet->dispItems('SELECT COUNT(*) FROM tbl_nouveautes','ID_EVENT',10,'DESC'); $c_page=$objet->$current_page; $n_pages= $objet->$n_pages; require VIEWS_DIR.'disp-news.php';
в этом коде я создал объект (objet) типа disp … Я хочу использовать переменные, объявленные в функции dispItems ($ n_pages и $ current_page) в представлении (disp-news.php)
поэтому я считаю, что переменные класса являются одними и теми же переменными в функции dispItems () … но при попытке получить к ним доступ из контроллера … используя объект. это показывает мне ошибку:
Видеть:
Notice: Undefined variable: n_pages in C:\Program Files\EasyPHP-5.3.6.1\www\example\admin\global\news.php on line 14 Fatal error: Cannot access empty property in C:\Program Files\EasyPHP-5.3.6.1\www\example\admin\global\news.php on line 14
Несмотря на то, что $ n_pages и $ current_pages публикуются в классе disp
заранее спасибо
c_page=$objet->$current_page; n_pages= $objet->$n_pages;
должно быть
$c_page=$objet->current_page; $n_pages= $objet->n_pages;
В теле нестатических методов класса вам необходимо получить доступ к членам класса, например $this->current_page
, а не $current_page