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.