Implementé mucho de Zend_Db
código en Zend Framework.
Como han dicho otros, la razón por la que Zend_Db
devuelve cadenas en lugar de enteros o flotantes nativos de PHP es que las extensiones de la base de datos de PHP devuelven cadenas. Y la razón de esto es que podría no haber un tipo de PHP nativo para representar cierto tipo de base de datos.
Por ejemplo, BIGINT
de MySQL es un entero de 64 bits con signo. De forma predeterminada, PHP int
El tipo está limitado a valores de 32 bits, por lo que si obtiene datos de la base de datos y los convierte implícitamente a int
, algunos valores pueden estar truncados. Hay varios otros casos similares, para float
y fechas, etc.
El uso de la representación de cadena para todos los tipos de datos es la mejor manera de mantener la sencillez y la coherencia, estar seguro de evitar la pérdida de datos y evitar escribir muchos códigos de casos especiales específicos del proveedor para realizar la asignación de tipos de datos. Ese código adicional también incurriría en una penalización de rendimiento.
Entonces, si tiene casos específicos en los que necesita que los resultados de la base de datos se asignen a tipos de datos PHP nativos, debe implementarlo usted mismo en el código de su aplicación (por ejemplo, en un Zend_Db_Table_Row
personalizado clase).