Variabile di un oggetto che istanzia una classe estesa

di il
1 risposte

Variabile di un oggetto che istanzia una classe estesa

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

  • Re: Variabile di un oggetto che istanzia una classe estesa

    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