Saya menerapkan banyak Zend_Db
kode di Zend Framework.
Seperti yang telah dinyatakan orang lain, alasan mengapa Zend_Db
mengembalikan string alih-alih bilangan bulat atau float asli PHP adalah ekstensi basis data PHP mengembalikan string. Dan alasannya adalah mungkin tidak ada tipe PHP asli untuk mewakili tipe database tertentu.
Misalnya, BIGINT
MySQL adalah bilangan bulat bertanda 64-bit. Secara default, PHP int
type terbatas pada nilai 32-bit, jadi jika Anda mengambil data dari database dan secara implisit mengonversinya menjadi int
, beberapa nilai mungkin terpotong. Ada beberapa kasus serupa lainnya, untuk float
dan tanggal, dll.
Menggunakan representasi string untuk semua tipe data adalah cara terbaik untuk tetap sederhana dan konsisten, aman dalam menghindari kehilangan data, dan menghindari penulisan banyak kode kasus khusus khusus vendor untuk melakukan pemetaan tipe data. Kode tambahan itu juga akan dikenakan penalti kinerja.
Jadi, jika Anda memiliki kasus tertentu di mana Anda memerlukan hasil database untuk dipetakan ke tipe data PHP asli, Anda harus mengimplementasikannya sendiri dalam kode aplikasi Anda (mis. dalam Zend_Db_Table_Row
khusus kelas).