Classi -> Richiamo metodi

Salve ho un piccolo (spero piccolo) problema con l'utilizzo delle classi.

Ho costruito una classe con dei metodi set e get per settare e per ricevere rispettivamente i valori degli attributi della classe.

<?

class quiz{

var $domande;

var $matricola;

function quiz(){

$this->domande = array();

}

function addDomanda($dom){

array_push($this->domande,$dom);

}

function getDomanda($num){

 return $this->domande["$num"];

}

function getNumeroDomande(){

 return array_count_values($this->domande);

}

}

?>

Ora quando mi creo l'oggetto e lo salvo nella sessione dopo averlo popolato

<?

$scheda = new quiz();

//... popolo l'array di quiz

$_SESSION['oggetto'] = $scheda ;

?>

quando lo recupero e cerco di invocare i metodi di tale classe ottendo l'errore:       

Fatal error: Call to a member function on a non-object 

<?

$scheda = &$_SESSION['oggetto'];

$scheda->getNumeroDomande();

?>

Utilizzo php4 e sono state incluse le classi in questione nel file.

Qualcuno può aiutarmi??

Grazie

Ciao

inviato 11 anni fa
myphp
X 0 X

Altro errore :

Fatal error: Unknown(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>autovalutazione</b> of the object you are trying to operate on was loaded _before_ the session was started in ...

risposto 11 anni fa
myphp
X 0 X

ho provato con un esempio più semplice ma non sono riuscito a risolvere il problema. Vi posto l'esempio con la speranza ke qualcuno mi sappia aiutare grazie.

<form id="form1" name="form1" method="post" action="ciao.php?page=x">

  <input type="submit" name="Submit" value="Invia" />

</form>

<?php

//session_start();

class oggetto {

   var $attrib = 1;

   var $aa = 'gianni';

function get(){

return $this->attrib;

}

function get2(){

return "ciao";

}

}

 if (isset($_REQUEST['page']) && $_REQUEST['page'] != "") {

       $page = $_GET['page'];

if ($page=='x') {

$a = $_SESSION['oggetto'];

//echo $a->attrib;

echo $a->get();

echo $a->get2();

echo $a->aa;;

}

}else{

$ogg = new oggetto();

$_SESSION['oggetto'] = $ogg;

}

$o = $_SESSION['oggetto'];

echo $o->attrib;

echo $o->get();

echo $o->get2();

echo $o->aa;

?>

Dopo aver digitato invio:

Fatal error: Unknown(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>oggetto</b> of the object you are trying to operate on was loaded _before_ the session was started in c:\easyphp1-8\www\ciao.php on line 26

risposto 11 anni fa
myphp
X 0 X

perché hai commentato session_start()?

comunque quell'errore ti avverte che le dichiarazioni delle classi i cui oggetti risiedono nei dati di sessione devono precedere l'istruzione session_start.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda