Linguaggi di programmazione

PHP, né carne né pesce

Un esempio di codice PHP:

function filterFieldsByGroup(array $fields, string $group) : array {
    $filtered = array();
    foreach  ($fields as $fieldName => $field) {
        $fieldGroup = $field['group'] ?? '-';
        if ($fieldGroup === $group)
            $filtered[$fieldName] = $field;
    }
    return $filtered;
}

Cosa notiamo:

  • Viene specificato il tipo dei parametri e del valore di ritorno della funzione, ma solo fino a un certo punto: per quanto riguarda il parametro $fields e il valore di ritorno si capisce che sono array, ma non array di cosa;
  • Viene utilizzato l'operatore ??, quindi sono gestiti i tipi nullabili, ma solo parzialmente (tralascio una descrizione dettagliata, perché sarebbe complicata);
  • Per l'uguaglianza viene utilizzato l'operatore ===, proprio dei linguaggi debolmente tipizzati, infatti significa stesso tipo e stesso valore; significa che l'operatore == è lasco rispetto ai tipi;
  • Non è prevista la dichiarazione di tipo per le variabili, anzi non è proprio necessario dichiararle prima di usarle!

Ci sarebbe molte altre osservazioni da fare, ma la conclusione è che PHP non è un linguaggio particolarmente dotato per quanto riguarda la prevenzione degli errori.

Ecco perché, anche volendo tapparmi il naso rispetto al suo stile desueto e poco elegante, sto cercando di abbandolarlo.


Giorgio Barchiesi
Albo degli Ingegneri Sez. A, N. 4027 della Prov. di Trento
P.IVA 02370260222, C.F. BRC GRG 58L26 C794R

Copyright © 2015-2024 Giorgio Barchiesi - Tutti i diritti riservati