Внедрих голяма част от Zend_Db
код в Zend Framework.
Както са посочили други, причината Zend_Db
връща низове вместо естествени PHP цели числа или плаващи числа е, че разширенията на базата данни на PHP връщат низове. И причината за това е, че може да няма собствен PHP тип, който да представя определен тип база данни.
Например BIGINT
на MySQL е 64-битово цяло число със знак. По подразбиране PHP int
типът е ограничен до 32-битови стойности, така че ако извлечете данни от базата данни и имплицитно ги преобразувате в int
, някои стойности може да бъдат съкратени. Има няколко други подобни случая, за float
и дати и др.
Използването на низовото представяне за всички типове данни е най-добрият начин да останете прости и последователни, да бъдете в безопасност при избягване на загуба на данни и да избягвате писането на много специфични за доставчика код за специални случаи, за да направите картографиране на типове данни. Този допълнителен код също би довел до намаляване на производителността.
Така че, ако имате конкретни случаи, в които се нуждаете от резултатите от базата данни да бъдат съпоставени с родни типове данни на PHP, трябва да го внедрите сами в кода на приложението си (например в персонализиран Zend_Db_Table_Row
клас).