Array di Oggetti

ziuccio

Nuovo Utente
28 Giu 2010
8
0
0
Ciao a tutti.

Mi servirebbe un piccolo aiuto per fare una cosa che in Java veniva...ma in PHP mi da dei problemi.

Allora:
Creo una classe che mi definisce un oggetto
PHP:
class oggetto1{
  var proprieta;
  function getProprieta...
  function setProprieta...
}

In un altra classe mi occupo di recuperare i valori dal DB

PHP:
class showListDocuments {
	var $allDocuments = array ();

	function getDB() {...}
	function listDocuments() {
		$documents = $db->selectQuery($database, "daily_doc", array (), $condition); //
		$allDocuments= showListDocuments::setAllDocuments($documents);
		for($i=0;$i<count($allDocuments); $i++){
				 
				 $obj1  = new oggetto1();
				 $obj1  ->setProprieta(,$allDocuments[$i]['dbField']));
				 $allDocuments[$i]= $obj1;
		}
		
	}
	
	function getAllDocuments(){
		return $this->allDocuments;
	}

	public function setAllDocuments($val) {
		logger::logToFile("Settaggio allDocuments ".$val);
		$this->allDocuments = $val;
	}

poi nella pagina html

PHP:
<?php
	include_once("util/classes/showListDocuments.class.php");
	$documents = new showListDocuments();
	$documents->listDocuments();
	$alldocuments = $documents->getAllDocuments();
?>
<body>
			<?php

			for($i=0; $i<count($alldocuments);$i++){
			        $obj1 = new oggetto1();
				$obj1= $alldocuments[$i];
                                 echo obj1->getProprieta();
			}
			?>
</body>

Esattamente qui
PHP:
 $obj1= $alldocuments[$i];
pare che obj1 perda la sua quaita` di oggetto e di conseguenza nn riesco a utilizzare il metodo get.

Fatal error: Call to a member function getProprieta() on a non-object in C:\xampp\htdocs\project\file.php on line 49

Mi sapete aiutare?
Grazie!!!
 
Ultima modifica:
Nella classe showListDocuments devi usare il $this-> quando assegni l'oggetto all'array della classe:
PHP:
 for($i=0;$i<count($allDocuments); $i++){
                 
                 $obj1  = new oggetto1();
                 $obj1  ->setProprieta(,$allDocuments[$i]['dbField']));
                 $this->allDocuments[$i]= $obj1;//Qua penso sia l'errore
        }
Atrimenti lo riassegni alla variabile di metodo che ha lo stesso nome. Se vuoi un consiglio per le variabili cerca di utilizzare nomi un po differenti altrimenti il codice è di difficile lettura
 
mhhh...
purtroppo non va ancora
Il problema penso sia qui. nella pagina html:
PHP:
$obj1 = new oggetto1(); // in questa riga $obj1 e` di tipo oggetto1
$obj1= $alldocuments[$i]; // qui $obj1 e` un array...non e` piu un istanza di oggetto1

Con la tua modifica l`errore rimane.

I nomi delle variabili le ho messe un po` cosi qui nel post...in genere mi attengo agli standard.
 
Scusa, ma non capisco per quale motivo in questa riga richiami il metodo in modo statico:
PHP:
$allDocuments= showListDocuments::setAllDocuments($documents);
Prova a chiamarlo utilizzando $this, così:
PHP:
$allDocuments= $this->setAllDocuments($documents);
 
Cambia che se richiami un metodo in modo statico esso non può più riferirsi alle variabili dell'istanza, perché per lui non esiste nessuna istanza. È come se lo richiamassi da semplice funzione. Quindi la variabile non viene popolata correttamente.
 

Discussioni simili