Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Ereditarietà classi

  1. #1
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732

    Ereditarietà classi

    Ciao a tutti,

    sto giochicchiando un pò con l'OOP di PHP 5 e volevo cercare di capire meglio l'ereditarietà.

    Posto subito il codice:

    Codice PHP:
    class str {
        
                var 
    $string;
        
                function 
    __construct($str) {
                
                    
    $this->string $str;
                
                }
                
                
    // stampa la stringa originale
                
    function stampa() {
                
                    echo 
    $this->string;
                
                }
                
                
    // stampa il l'hash MD5 della stringa
                
    function stampaMD5() {
                
                    echo 
    md5($this->string);
                                                        
                }
                
                
    // stampa la stringa al rovescio
                
    function inverti() {
                
                    
    $nChars strlen($this->string);
                    
    $Str $this->string;
                    
                    for (
    $i 0$i $nChars$i++) {
                    
                        
    $arr[] = $Str[$i];
                    
                    }

                    echo 
    implode("",array_reverse($arr,true));
                 
                }
                
                
        }

        class 
    saluta extends str {
        
                var 
    $msg;
                                                    
                function 
    saluta($msg) {
                                            
                    
    $this->msg = new str($msg);            
                    
                }    
                
                function 
    stampaUC() {
                
                    echo 
    strtoupper($this->msg->string);
                
                }
                                                                                                                    
        }
        
        
        
        
    $ciao = new saluta('ciao');
            
        
    $ciao->msg->stampa();        
        
    $ciao->msg->stampaUC(); 
    In pratica creo una classe "saluta" in cui inizializzo una stringa.

    Su questa stringa passata al costruttore creo poi un nuovo oggetto perchè voglio che la stessa acceda a diversi metodi della classe ereditata "str". *

    E vi accedo quindi con: $ciao->msg->metodo().

    Se però volessi creare un metodo personalizzato nella classe "saluta" perchè non posso accedervi con: $ciao->msg->stampaUC() ma solo con $ciao->stampaUC() ?

    Come dovrei fare per poter accedere in modo uguale ai metodi della classe "str" con:
    $ciao->msg->stampaUC()?

    Potendo dunque avere una sintassi coerente come:
    $ciao->msg->stampa()
    $ciao->msg->stampaUC()

    Scusate se ho fatto qualche errore (orrore) logico nell'impostazione del codice ma è proprio perchè lo sto studiando che ho bisogno di chiarimenti.

    * Il fatto di aver costruito la variabile "msg" come oggetto l'ho fatto per vedere come funzionava l'annidamento degli oggetti, altrimenti so anch'io che mi bastava solo ereditare "str" ed il gioco era fatto.

    Tnx.

  2. #2
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Nessuno?

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.