Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306

    Oggetto di una classe in un'altra classe

    Ciao a tutti ragazzi
    vorrei chiedervi una cosa in merito a come riferirsi ad un oggetto della classe X, all'interno della classe Y.

    Ho una pagina che crea un oggetto della classe X ($oggX) , e questo oggetto viene passato ad un metodo della classe Y ( metodoY($oggX) )

    All'interno della classe Y, e specificatamente nell'implementazione del

    Codice PHP:
    public function metodoY ($oggettoX){} 


    come faccio a riferirmi ai metodi della classe X?

    posso usare la notazione

    Codice PHP:

    public function metodoY ($oggettoX){
    .....
    $oggettoX->metodoX()

    .....


  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Perché non fai una prova e vedi se funziona?
    Il PC non esplode.
    Prova, prova sempre quando ti viene un dubbio, vedi cosa succede, se poi non funziona e non capisci perché chiedi, ma il miglior modo per imparare è sperimentare in prima persona.

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Perché non fai una prova e vedi se funziona?
    Il PC non esplode.
    Io non ci giurerei




  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306
    Avete ragione ragazzi, è solo che ho la paura che mi perdo e non so poi spiegare il perchè..

    Sul vostro suggerimento oggi mi sono messo a creare 2 classi: Libro e Libreria ed ho fatto un po' di prove, tentando anche di complicarmi un po' la vita fino ad arrivare a questo punto in cui vi chiedo un'illuminazione.


    Il codice è abbastanza lungo anche perchè ho fatto tante prove semplici per vedere se tutto funzionava bene.

    Arrivo al problema:


    Se ho in una classe Liberia una proprietà inizializzata $libroc con l'oggetto di un'altra classe Libro.

    Io posso andare a richiamare in questa classe Libreria una proprietà/metodo statico della classe Libro tramite $libroc?

    L'errore lo si ha alla fine del codice Libreria, con la definizione della funzione leggitutto()
    Dove appunto io voglio andare a modificare la quantità che avevo settato in precedenza (60) e la voglio andare a raddoppiare.

    In questa funzione sono riuscito ad utilizzare l'oggetto passato come parametro per richiamare i vari metodi (statici e non) della classe Libro, ma tramite la proprietà della classe Libreria invece non sono riuscito a richiamare il metodo statico della classe Libro



    Questa è la classe Libro
    Codice PHP:
      
    class Libro {    
    private 
    $tipo;
    private 
    $titolo;
    private 
    $prezzo;
    private static 
    $qta


    public function 
    __construct($tipologia,$tit,$pr) {      
      
    $this-> tipo $tipologia;        
     
    $this-> titolo $tit;       
      
    $this-> prezzo $pr;             
     }             

    public function 
    getPrezzo(){   //getter         
           
    return $this->prezzo;     
         }     

    public function 
    setPrezzo($pre){   
          
    $this->prezzo=$pre;  
       }          
       
    public function 
    getTito(){   //getter  leggo il titolo        
     
    return $this->titolo;                   //recupera valore memorizzato nella variabile di classe $titolo    
     
    }      
        
    public function 
    setTito($tito){ //setter  setto il titolo         
        
    $this->titolo $tito;                   //aggiungo il titolo alla variabile di classe $titolo    
    }                 

    public function 
    getTipo(){   //getter  leggo il tipo       
              
    return $this->tipo;                   //recupera valore memorizzato nella variabile di classe $tipo     
    }   

    public function 
    setTipo($tip){   //getter  setto la tipologia      
       
    $this->tipo=$tip;                   //aggiungo la tipologia alla variabile di classe $tipo   
      
    }          

    public static function 
    getQta(){   //getter  leggo la qta   
          
    return self::$qta;                 //ritorna la proprietà di classe statica $qta     
    }         
     

    public static function 
    setQta($q){   //getter  setto la qta      
       
    self::$qta=$q;     //aggiungo la quantità alla proprietà di classe statica $qta   

      


    Questa è la classe Libreria
    Codice PHP:


    class Libreria {         
         private 
    $contiene;
        private 
    $nome;
        private 
    $indirizzo;
         private 
    $prezzo
        private 
    $quantità;
        private 
    $libroc


    public function 
    __construct($nom,$indi,$libr) {     
         
    $this-> nome $nom;             
     
    $this-> indirizzo $indi;    
         
    $this->libroc=$libr;    
     }    


     public function 
    setContiene($libr){        
     
    $this->contiene=$libr->getTipo();     }   


    public function 
    getContiene(){   //getter         
    return $this->contiene;     }       


    public function 
    aggPrezz($libr,$valore){       
     
    $libr->setPrezzo($valore);             
      
    $this->prezzo=$libr->getPrezzo(); 

      
    //tramite oggetto libro richiamo funz della classe libro per settare   
    //poi sempre tramite l'oggetto libro chiamo la funzione di lettura,  
    //per memorizzare nella proprietà $prezzo della classe Libreria              
     
    }   


    public function 
    getPrezz(){   //getter         
     
    return $this->prezzo;               }      


     
    //Ora provo funzione statica          


     
    public function leggiQta(){   //getter  leggo la quantità      
        
         
    return $this->quantità;                 
      
    //recupera valore memorizzato nella variabile di classe $quantità     }         


     
    public function impostaQta($libr,$q){ //setter  setto la qta   
         
    $libr::setQta($q);        
         
    $this->quantità=$libr::getQta();                            }       



    public function 
    leggitutto($libr){   //getter  leggo tutte le info               

       
    if($libr->getTipo()){           

      
    $tipointerno=$libr->getTipo();                

      echo
    "<br>QUI ABBIAMO UN ".$tipointerno." COME LIBRO<br>";     

      echo 
    "<br>Il libro che è in libreria è un " .$libr->getTipo();           
      echo 
    "<br>il titolo del ".$libr->getTipo() ."è il " $libr->getTito();           
      echo 
    "<br> abbiamo una quantità di ".$libr::getQta()." copie";               



    /////////////////////////////VOGLIO RADDOPPIARE LA QUANTITA' (2+60)  //////////////////////////
       
    $cisono=2*($this->libroc::getQta()); 
        echo
    "<br>$cisono<br>";            
        
    $this->libroc::setQta($cisono);     <-----Mi da ERRORE             

         
    echo "abbiamo questa quantità dopo la funzione setQta interna".$this->libroc;         
          }                


    codice:
    $nlibro= new Libro('Rivista','Focus','4');
            
        echo "<br>";
        var_dump($nlibro);  //stampo l'oggetto $nlibro
        
        
         $nlibro->setPrezzo(10);   //chiamo il setter per settare prezzo
         echo "<br>";
         echo "il prezzo del libro ora , dopo la modifica, è ";
         echo $nlibro -> getPrezzo();
         
         
         echo "<br>";
        echo "tipologia:";
        echo $nlibro -> getTipo(); //chiamo il getter per il tipo 
        
    
    
        echo "<br>";
        echo "il titolo del libro è ";
        echo $nlibro -> getTito(); //chiamo il getter per il titolo
        
        $nlibro -> setTito('FattoQuotidiano');   //chiamo il setter  per settare il titolo
        
        echo "<br>";
        echo "il titolo del libro ora , dopo la modifica, è ";
        echo $nlibro -> getTito(); //chiamo il getter per il tittolo
        
    
    
        
        
        $nlibro -> setTipo('quotidiano');   //chiamo il setter  per settare la tipologia
        
        echo "<br>";
        echo "Modifico la tipologia ed ora il tipo di libro è ";
        echo $nlibro -> getTipo(); //chiamo il getter per il tittolo
        
        echo "<br><br>";
        var_dump($nlibro);
        echo "<br><br>";
        echo "il libro che ho al momento è ";
                echo$nlibro -> getTipo();
                echo " dal titolo : " .$nlibro -> getTito();
                echo " ad un prezzo di " .$nlibro -> getPrezzo()." euro ";
        Libro::setQta(7);    
        echo "<br>la quantità del ".$nlibro -> getTipo() ." è "
                . Libro::getQta()." copie";
                
                
        /*USO LIBRERIA*/        
                
        echo "<br><br>";
        
        $lia=new Libreria('Del Corso','via Mazzini 25',$nlibro);
        echo "stampo oggetto Libreria<br>";
        var_dump($lia);
        echo "<br><br>";
        echo "stampo oggetto Libreria dopo setContiene(oggetto)<br>";
        $lia->setContiene($nlibro);
        var_dump($lia);
        
        echo "<br><br>";
        echo "stampo oggetto Libreria dopo getContiene()<br>";
        $lia->getContiene();
        var_dump($lia);
        echo "<br>";
        echo "La Libreria contiene un ".$lia->getContiene();  //PERFETTO
        echo "<br>";
        echo "<br><br>";
        echo "stampo oggetto Libreria dopo getPrezz(oggetto)<br>";
        $lia->getPrezz($nlibro);
        echo "<br>";
        echo "Il prezzo del " .$lia->getContiene();
        echo " è ". $lia->getPrezz($nlibro);  //PERFETTO
        echo "<br>";
        
        $lia->aggPrezz($nlibro,679);
            
        echo "<br><br>";
        echo "stampo oggetto Libreria dopo aggPrez(oggetto,prezzo che ci metto) e getPrezz(oggetto)<br>";
        $lia->getPrezz($nlibro);
    
    
        
        echo "<br>";
        echo "Il prezzo del " .$lia->getContiene();
        echo " è ". $lia->getPrezz($nlibro)." euro";  //PERFETTO
        echo "<br>";
        
        $lia->impostaQta($nlibro, 60); 
        echo "la quantità del ".$lia->getContiene(). " è "
                .$lia->leggiQta()." copie";
        
        /*vado a modificare anche la prorpietà statica di Libro,
         * infatti se tramite l'oggetto libro vado a leggere la quantià
         * vedo lo stesso valore*/
                
                echo "<br>la quantità del ".$nlibro -> getTipo() ." è "
                        . Libro::getQta()." copie";
                
                        
            $lia->leggitutto($nlibro);
    Ultima modifica di Alfoxx; 23-10-2016 a 17:44

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.