A partire da PHP5, digitare hinting è una cosa . Le distinzioni più importanti sono le seguenti:
- Non puoi digitare il suggerimento scalare / dati numerici, stringa, risorsa o tratto.
- È possibile forzare i parametri che sono oggetti, matrici o funzioni anonime.
- Puoi digitare il suggerimento utilizzando i nomi di interfaccia, i nomi di classe, la parola chiave
object
, la parola chiave array
o la parola chiave callable
(per funzioni anonime / callback).
- Quando una funzione o un metodo di tipo suggerito viene chiamato con parametri non corrispondenti, si verificherà un errore irreversibile irreversibile (non un'eccezione).
- Se si specifica
null
come valore predefinito, digitare hinting è in qualche modo inutile.
Suggerirei di controllare almeno isset
e is_null
prima di eseguire l'algoritmo e suggerisco caldamente di controllare il tipo con cose come is_string
, is_int
, is_float
, ecc. Anche il casting di tipo è valido . Modifica: questo si applica solo quando non è possibile utilizzare il suggerimento del tipo per una funzione, ad es. parametri scalari.
Il ritorno di false
o il lancio di un'eccezione sono tutte domande contestuali - devi determinare quale si adatta a ciascuna particolare funzione / algoritmo nel tuo pacchetto, che includerà considerando come qualcuno che usa il tuo codice dovrebbe interagire con esso. Il mio esempio preferito di lancio di eccezioni forzato è Sentry . Voglio dire, guarda tutti quei blocchi di cattura. Forse vorresti che il tuo codice generasse tante cose per fornire informazioni diverse, o forse puoi restituire un valore booleano, o forse puoi lanciare un new Exception("Message text")
. È una scelta personale per ogni pezzo di codice. Ti consiglio di esaminare le potenziali applicazioni in cui il tuo pacchetto sarà utile e vedere quanto bene il tuo pacchetto si integrerebbe con quegli stili di codifica.
tl; versione dr
Le sole primitive che puoi tipo suggerimento sono array
e object
. È possibile digitare cast o type selezionare altre primitive. Chiamate di funzione / metodo con parametri che non riescono a soddisfare i suggerimenti di tipo si traduce in un errore fatale catchable. Che cosa fare quando i parametri inviati alla funzione / metodo non corrispondono, è una scelta personale specifica per il contesto a cui nessuno può rispondere in modo definitivo senza visualizzare il codice.
Modifica: vedi anche link