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