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

    Impostare i tipi nelle classi

    Ciao a tutti ragazzi, ho alcuni dubbi sul dover scrivere i tipi di dati alle proprietà ed ai metodi della classe , che generalmente creano più problemi che altro....cmq....

    considerando il dover scrivere i tipi di dati alle proprietà ed ai metodi della classe ho alcune domande:

    Codice PHP:
    class Libro  {   
      protected 
    $titolo;   
      protected 
    $autore;  
       public function 
    __construct(string $titstring $aut) {   
              
    $this->titolo $tit;    
              
    $this-> autore $aut;  






    1) per le proprietà si mette il tipo?
    Codice PHP:
         protected string $titolo
    appena inserisco una cosa del genere, il mio editor mi da errore.

    oppure per le proprietà non si utilizza questo, ma si inserisce il tipo soltanto nelle dichiarazioni dei parametri di ingresso delle funzioni che li utilizzano?





    2)
    Se considero un metodo in cui il parametro di ingresso è un array ($data), che tipo di dato vado a metterci prima di $data?
    Codice PHP:
    public function login($data) { 





    3)
    Quando un metodo, setta qualcosa, o cancella qualcosa, ma non c'è il return di nulla, allora significa che il metodo non ha parametri di uscita giusto?, per cui non si specifica la tipologia di info che deve restituire il metodo, giusto?

    Per esempio se questo metodo
    Codice PHP:
    public function login($data) :bool{
    ......
    .....
    return 
    false;

    se non c'è return non metto nulla?


  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    1) I tipi di dato in PHP si usano solo nelle dichiarazioni delle funzioni.
    Questa cosa serve solo per validare i parametri che si passano alla funzione durante la chiamata.
    Nel tuo caso, quando crei un nuovo oggeto Libro, il costruttore verifica che ciò che gli stai passando siano 2 stringhe, ma ciò non forza poi le 2 variabili a restare stringhe all'interno del costruttore.
    Tu non lo fai, ma volendo all'interno del costruttore potresti fare
    $tit = array('pippo');
    quindi far diventare $tit un array senza che PHP si lamenti.

    Per questo motivo non ha senso dichiarare il tipo di una variabile in questo modo
    protected string $titolo;

    perché tanto nell'esecuzione dello script potrebbe diventare qualsiasi cosa senza generare errori.

    2) da PHP > 5.1 puoi usare il tipo di dato array

    3) Sì

    Resta inteso che dichiarare i tipi di dato non è obbligatorio, se lo fai può essere più facile capire il significato del codice.
    Ultima modifica di Alhazred; 22-10-2016 a 14:09

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    1) I tipi di dato in PHP si usano solo nelle dichiarazioni delle funzioni.
    Questa cosa serve solo per validare i parametri che si passano alla funzione durante la chiamata.
    Nel tuo caso, quando crei un nuovo oggeto Libro, il costruttore verifica che ciò che gli stai passando siano 2 stringhe, ma ciò non forza poi le 2 variabili a restare stringhe all'interno del costruttore.
    Tu non lo fai, ma volendo all'interno del costruttore potresti fare
    $tit = array('pippo');
    quindi far diventare $tit un array senza che PHP si lamenti.

    Per questo motivo non ha senso dichiarare il tipo di una variabile in questo modo
    protected string $titolo;

    perché tanto nell'esecuzione dello script potrebbe diventare qualsiasi cosa senza generare errori.

    2) da PHP > 5.1 puoi usare il tipo di dato array

    3) Sì

    Resta inteso che dichiarare i tipi di dato non è obbligatorio, se lo fai può essere più facile capire il significato del codice.

    Grazie per la risposta


    1) quando dici che nel costruttore potrei fare $tit = array('pippo');
    significa questa cosa ?
    Codice PHP:
    class Libro  {   
      protected 
    $titolo;   
      protected 
    $autore;  
      public function 
    __construct(string $titstring $aut) {   
               
    $tit = array('pippo');
              
    $this->titolo $tit;    
              
    $this-> autore $aut;  

    quindi per la 2) lascio così

    Codice PHP:
    public function login($data) { 
    senza specificare nessun dato.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    1) sì, chiaramente non ha senso farlo ai fini della logica dell'applicazione, ma se lo facessi sarebbe del tutto lecito dal punto di vista sintattico, non violeresti alcuna regola e non si genererebbe alcun errore.
    Questo perché pur specificando il tipo string come parametro della funzione, questo non vincola la variabile ad essere una stringa all'interno della funzione, vincola solo il fatto che $tit quando arriva deve essere una stringa, ma da lì in poi può diventare qualsiasi cosa.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    1) sì, chiaramente non ha senso farlo ai fini della logica dell'applicazione, ma se lo facessi sarebbe del tutto lecito dal punto di vista sintattico, non violeresti alcuna regola e non si genererebbe alcun errore.
    Questo perché pur specificando il tipo string come parametro della funzione, questo non vincola la variabile ad essere una stringa all'interno della funzione, vincola solo il fatto che $tit quando arriva deve essere una stringa, ma da lì in poi può diventare qualsiasi cosa.

    grazie molto chiaro

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.