多くのZend_Db
を実装しました ZendFrameworkのコード。
他の人が述べているように、Zend_Db
ネイティブのPHP整数またはfloatの代わりに文字列を返すのは、PHPのデータベース拡張機能が文字列を返すことです。その理由は、特定のデータベースタイプを表すネイティブPHPタイプがない可能性があるためです。
たとえば、MySQLのBIGINT
64ビットの符号付き整数です。デフォルトでは、PHPのint
タイプは32ビット値に制限されているため、データベースからデータをフェッチし、それを暗黙的にint
に変換する場合 、一部の値は切り捨てられる場合があります。 float
の場合、他にも同様のケースがいくつかあります。 と日付など。
すべてのデータ型に文字列表現を使用することは、シンプルで一貫性を保ち、データ損失を回避し、データ型マッピングを行うためにベンダー固有の特殊なコードを大量に記述しないようにするための最良の方法です。その余分なコードもパフォーマンスの低下を招きます。
したがって、データベースの結果をネイティブPHPデータ型にマッピングする必要がある特定のケースがある場合は、アプリケーションコード(カスタムZend_Db_Table_Row
など)に自分で実装する必要があります。 クラス)。