Zugriff auf Klassenvariablen
Es ist das erste mal, dass ich OOP mit PHP 5.. also das ist mein problem..
Ich habe eine Datei disp.php
enthält eine Klasse mit dem Namen class disp (Modell in 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){}
}
}
dies ist die Datei news.php
(controller in 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';
in diesem code erstellt ein Objekt (objet) der Typ disp... ich möchte die Verwendung der deklarierten Variablen in der Funktion dispItems
, ($n_pages
und $current_page
) in der Ansicht (disp-news.php
)
also ich denke, dass die Klassen-Variablen werden die gleichen Variablen in der Funktion dispItems()
... aber wenn man versucht auf Sie zuzugreifen aus dem controller ...mit dem Objekt. es zeigt mir einen Fehler :
Finden Sie unter:
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
Trotz $n_pages
und $current_pages
als öffentlich in der Klasse disp
danke im Voraus
InformationsquelleAutor SmootQ | 2011-08-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
sollte
Bearbeitet , Aber dies ist nicht der Fehler ..
Sorry, Dogbert, ich habe nicht beobachtet, das zweite $ nach -> ich dachte, Sie sprechen nur über die ersten $ in jeder Zeile +1
InformationsquelleAutor Dogbert
In die Körper von nicht-statische Klasse, die Methoden, die Sie benötigen, um Zugriff auf Klassen-member wie
$this->current_page
, nicht$current_page
Das ist für alle Ihre Mitglieder (
$cmd2
,$npages
usw), nicht nur$current_page
immer noch der gleiche Fehler ... ich änderte alle Variablen, wie Sie vorgeschlagen, aber vergeblich
Es sieht aus wie Sie haben
n_pages
statt$n_pages
irgendwo im code. Auch, wie Dogbert schon sagte, solltest du schreiben$n_pages= $objet->n_pages;
, nicht$n_pages= $objet->$n_pages;
wie in Ihrem bearbeitet code(nur ein$
!!!)Aah , okey, ich habe nicht beobachtet, dass Sie nicht schreiben das zweite $ , werde ich versuchen 🙂 vielen Dank +1
InformationsquelleAutor a1ex07