Доступ к переменным класса - PullRequest
4 голосов
/ 21 августа 2011

Впервые я использую ООП с 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';

в этом коде я создал объект (объект) типа 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

Заранее спасибо

Ответы [ 2 ]

14 голосов
/ 21 августа 2011
c_page=$objet->$current_page;
n_pages= $objet->$n_pages;

должно быть

$c_page=$objet->current_page;
$n_pages= $objet->n_pages;
5 голосов
/ 21 августа 2011

В теле нестатических методов класса вам нужно получить доступ к членам класса, таким как $this->current_page, а не $current_page

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...