Ho implementato molto di Zend_Db
codice in Zend Framework.
Come altri hanno affermato, il motivo per cui Zend_Db
restituisce stringhe invece di interi o float nativi di PHP è che le estensioni del database di PHP restituiscono stringhe. E il motivo è che potrebbe non esserci alcun tipo PHP nativo per rappresentare un determinato tipo di database.
Ad esempio, BIGINT
di MySQL è un intero con segno a 64 bit. Per impostazione predefinita, il PHP int
type è limitato a valori a 32 bit, quindi se prendi i dati dal database e li converti implicitamente in int
, alcuni valori potrebbero essere troncati. Ci sono molti altri casi simili, per float
e date, ecc.
L'uso della rappresentazione di stringa per tutti i tipi di dati è il modo migliore per rimanere semplici e coerenti, evitare la perdita di dati ed evitare di scrivere molto codice di casi speciali specifici del fornitore per eseguire il mapping del tipo di dati. Anche quel codice aggiuntivo comporterebbe una penalizzazione delle prestazioni.
Quindi, se hai casi specifici in cui hai bisogno che i risultati del database siano mappati su tipi di dati PHP nativi, dovresti implementarlo tu stesso nel codice dell'applicazione (ad esempio in un Zend_Db_Table_Row
personalizzato classe).