Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Come istanziare le variabili che vengono passate alle funzioni in Php5

    Salve a tutti,
    ho un piccolo dubbio su come istanziare le variabili che vengono passate alle funzioni in una classe Php5...
    Cioè la classe esempio che contiene la funzione saluta (alla quale viene passata la variabile incriminata "nome") dovrebbe essere composta così:


    Codice PHP:
    Class Esempio{

     private 
    $nomeSito "Il Mio Sito";

      public function 
    saluta($nome){

       echo 
    "Benvenuto ".$nome." su ".$this->nomeSito;

      }

    }



    $benvenuto = new Esempio();
    $benvenuto->saluta("Pippo");
    //Si ottiene "Benvenuto Pippo su Il Mio Sito" 
    oppure così:

    Codice PHP:
    Class Esempio{

     private 
    $nomeSito "Il Mio Sito";
     private 
    $nome;

      public function 
    saluta($nome){

       
    $this->nome $nome;

       echo 
    "Benvenuto ".$this->nome." su ".$this->nomeSito;

      }

    }



    $benvenuto = new Esempio();
    $benvenuto->saluta("Pippo");
    //Si ottiene "Benvenuto Pippo su Il Mio Sito" 
    Grazie a tutti in anticipo!!!
    What is the |\/|atrix?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Non è rilevante.

    Se credi che la variabile sia una proprietà dell'oggetto, usa il secondo metodo, altrimenti il primo.

    Ragiona object oriented...

  3. #3
    Grazie mille per la tua risposta... Ma in genere quale metodo si usa?
    E poi, il primo metodo non dovrebbe essere meno sicuro del secondo poiche la variabile $nome del primo esempio non è di tipo private?
    Grazie ancora!
    What is the |\/|atrix?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Servirebbe un esempio accademico perchè qua non si tratta di una convenzione metodologica.

    Comunque, ritorniamo al pricipio della programmazione a oggetti.

    Una classe rappresenta il modello per uno o più oggetti.

    Nel tuo primo metodo non hai neanche definito la variabile $nome: questo vuol dire che hai considerato che l'oggetto non richiedeva la proprietà "nome", che il "nome" non faceva parte dello stato dell'oggetto.
    Hai definito un'azione che di per sè non è sbagliata, perciò non hai sbagliato nulla.

    Nel secondo metodo "nome" è una proprietà dell'oggetto.
    La funzione non si limita a stampare a video un messaggio, ma hai creato un metodo setter/getter. Quindi hai fatto un errore, stai facendo compiere al metodo due operazioni differenti: modificare lo stato dell'oggetto, assegnando un valore all'attributo, e accedere al valore, visualizzando un messaggio a video.
    Avresti dovuto creare un metodo setter e uno getter, e secondo me non sarebbe stato neppure giusto richiamare il metodo getter di stampa a video nel contesto del metodo setter.

    A parte questo errore l'enfasi del mio discorso si basa sul significato di $nome per l'oggetto.

    Tu forse volevi un'altra risposta ma dovresti migliorare l'esempio, ricorda che pensare OO significa anche astrarre, il tuo esempio non è OO se non sintatticamente e in relazione al linguaggio.

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.