Variabile di un oggetto che istanzia una classe estesa

di java999 il
1 risposte
Salve,
volevo chiederVi se fosse possibile stampare il valore di una variabile di un oggetto che istanzia una classe estesa.
Il codice è il seguente:

1) Creo una Classe con una variabile e, di seguito, la instanzio, e stampo il valore della sua unica variabile:

<?php

class TEST1{
        public $var_1;

        public function __construct($var){
                $this->var_1=$var;
                }
        }

$obj1 = new TEST1(10);
echo $obj1->var_1;
?>
2) Creo una nuova Classe che estende la classe precedente, la instanzio e stampo il valore della variabile ereditata:

class TEST2 extends TEST1{
        }

$obj2 = new TEST2(20);
echo $obj2->var_1;
3) Creo una nuova Classe che istanzia la nuova Classe estesa:

class TEST3{
        public $obj_a;

        public function __constrct($var){
                $this->obj_a = new TEST2($var);
                }
        }

$obj3 = new TEST3(30);
Come si stampa il valore della variabile $var_1 ?
Utilizzando questa sintassi non viene stampato niente.

echo $obj3->obj_a->var_1;
Vi ringrazio.

1 Risposte

  • Ho risolto, si tratta di una classe astratta, quindi il sorgente va corretto in questa maniera:

    1) Si crea una Classe astratta:
    
    abstract class TEST1{
            public $var_1;
            } 
    
    2) Si estende la Classe astratta:
    
    class TEST2 extends TEST1{
            
            public function __construct(){
                    }
            }
    
    3) Si crea una nuova Classe, in cui si instanzia un oggetto della Classe che estende la Classe astratta:
    
    class TEST3{
            public $obj_a;
    
            public function __construct($var){
                    $this->obj_a = new TEST2($var);
                    $this->obj_a->var_1=$var;
                    }       
            }
    
    4) Si istanzia un nuovo oggetto di quest'ultima classe, ed infine, si riesce ad accedere alla variabile della prima Classe, con l'ultima sintassi, stampandone il suo valore.
    
    $obj = new TEST3(20);
    echo $obj->obj_a->var_1;
    
Devi accedere o registrarti per scrivere nel forum
1 risposte