2011-08-21 109 views
3

这是我第一次使用OOP在PHP 5 ..所以这是我的问题..访问类变量

我有一个包含一个名为类类DISP文件disp.php(在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和$ curre nt_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的Inspite和$ current_pages公职类中的DISP

预先感谢您

回答

12
c_page=$objet->$current_page; 
n_pages= $objet->$n_pages; 

应该

$c_page=$objet->current_page; 
$n_pages= $objet->n_pages; 
+0

它只是复制代码时出错...谢谢:-) – SmootQ

+0

编辑,但是这不是错误.. – SmootQ

+0

对不起Dogbert,我没有观察到第二个$之后 - >,我以为你说的只是每一行中的第一个$ +1 – SmootQ

4

在非静态类方法的身体,你需要访问类成员一样$this->current_page,不$current_page

+0

谢谢我会试试它:-) – SmootQ

+1

这适用于所有成员'$ cmd2','$ npages'等),而不仅仅是'$ current_page' – a1ex07

+0

仍然是同样的错误...我改变了所有的变量,因为你建议,但徒劳 – SmootQ