Ich habe viel von Zend_Db
implementiert Code im Zend Framework.
Wie andere gesagt haben, ist der Grund, dass Zend_Db
Strings anstelle von nativen PHP-Ganzzahlen oder Gleitkommazahlen zurückgibt, ist, dass die Datenbankerweiterungen von PHP Strings zurückgeben. Und der Grund dafür ist, dass es möglicherweise keinen nativen PHP-Typ gibt, um einen bestimmten Datenbanktyp darzustellen.
Zum Beispiel BIGINT
von MySQL ist eine vorzeichenbehaftete 64-Bit-Ganzzahl. Standardmäßig ist der PHP int
type ist auf 32-Bit-Werte beschränkt, wenn Sie also Daten aus der Datenbank abrufen und implizit in int
konvertieren , werden einige Werte möglicherweise abgeschnitten. Es gibt mehrere andere ähnliche Fälle für float
und Daten usw.
Die Verwendung der Zeichenfolgendarstellung für alle Datentypen ist der beste Weg, um einfach und konsistent zu bleiben, Datenverluste zu vermeiden und das Schreiben von viel herstellerspezifischem Sonderfallcode für die Datentypzuordnung zu vermeiden. Dieser zusätzliche Code würde auch zu Leistungseinbußen führen.
Wenn Sie also spezielle Fälle haben, in denen Sie Datenbankergebnisse auf native PHP-Datentypen abbilden müssen, sollten Sie dies selbst in Ihrem Anwendungscode implementieren (z. B. in einer benutzerdefinierten Zend_Db_Table_Row
Klasse).