2011-08-21 111 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