Ik heb veel van de Zend_Db
. geïmplementeerd code in Zend Framework.
Zoals anderen hebben aangegeven, is de reden dat Zend_Db
strings teruggeeft in plaats van native PHP integers of floats is dat PHP's database extensions strings teruggeven. En de reden daarvoor is dat er misschien geen native PHP-type is om een bepaald databasetype te vertegenwoordigen.
Bijvoorbeeld MySQL's BIGINT
is een 64-bits geheel getal met teken. Standaard is de PHP int
type is beperkt tot 32-bits waarden, dus als u gegevens uit de database ophaalt en deze impliciet converteert naar int
, kunnen sommige waarden worden afgekapt. Er zijn verschillende andere soortgelijke gevallen, voor float
en datums, enz.
Het gebruik van de tekenreeksrepresentatie voor alle gegevenstypen is de beste manier om eenvoudig en consistent te blijven, gegevensverlies te voorkomen en te voorkomen dat u veel leverancierspecifieke code voor speciale gevallen schrijft om gegevenstypen in kaart te brengen. Die extra code zou ook een prestatiestraf opleveren.
Dus als je specifieke gevallen hebt waarin databaseresultaten moeten worden toegewezen aan native PHP-gegevenstypen, moet je dit zelf implementeren in je applicatiecode (bijvoorbeeld in een aangepaste Zend_Db_Table_Row
klas).