访问类变量


Accessing class variables

这是我第一次在PHP 5中使用OOP。所以这是我的问题。。

我有一个文件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类型的对象(objet(…我想使用在视图(disp-news.php(中的函数dispItems($n_pages$current_page(中声明的变量

所以我认为类变量是函数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