Rarst e stavo discutendo offline sull'uso di "% co_de" % 'operatore di soppressione degli errori in PHP, in particolare per testare l'esistenza delle chiavi di "facoltative" , vale a dire le chiavi di array che vengono utilizzate come switch qui e la loro mancanza di esistenza nell'array è funzionalmente equivalente all'array avente la chiave con un valore uguale a @
.
Ecco lo pseudo-codice per questo scenario:
function do_something( $args = array() ) {
if ( @$args['switch'] ) {
// Do something with this switch
}
// continue on...
}
vs. questo approccio:
function do_something( $args = array() ) {
if ( ! empty( $args['switch'] ) && $args['switch'] ) {
// Do something with this switch
}
// continue on...
}
Naturalmente nella maggior parte dei casi d'uso, gli errori di soppressione non sarebbero A Good Thing (tm) . Tuttavia in questo caso d'uso in cui un array viene passato con un elemento opzionale, mi sembra che sia in realtà una tecnica molto buona, ma potrei sbagliarmi e vorrei sentire le opinioni di altri sull'argomento prima di prendere una decisione.
So che ci sono presunti risultati di prestazioni per l'utilizzo del precedente approccio, ma mi piacerebbe sapere come si confrontano con l'alternativa e se i risultati delle prestazioni sono davvero importanti negli scenari del mondo reale?
P.S. Ho deciso di postare questo perché, dopo aver discusso offline con Rarst, ha chiesto una domanda più generale qui sui programmatori ma in realtà non fornisce un esempio dettagliato del caso d'uso specifico di cui discutevamo. E siccome sono abbastanza sicuro che vorrà usare le risposte fuori dal contesto su quell'altra domanda come giustificazione del perché sopra è "cattivo" ho deciso che avevo bisogno di ottenere opinioni su < em> questo caso d'uso specifico .