A PHP-ról senki sem mondaná, hogy egy jól kivitelezett nyelv, inkább arra hajaz, hogy mindent a lehető leggyorsabban egy húzással megcsináljunk, az nem számít, hogyan.
Ékes példája ennek a PDOStatement::getColumnMeta, ahol mindennel megpróbálnak bennünket eltántorítani attól, hogy használjuk ahelyett, hogy értelmesen megépítették volna ezt a részét a PDO-nak. Mire is gondolok?
Az rendben van, hogy nem minden driver támogatja (igazából ezért van kint a figyelmeztetés is), akkor adjon vissza NULL (de ne FALSE-t ), és kész.
Azokban az esetekben, mikor a driver támogatja ezt a dolgot, nem sima array()-t kellene megadniuk, hogy "hát, valami ilyesmi jön vissza", hanem készíteni kellett volna egy egyszerű interface-t, ami összefog mindent. A PDO eleve arra lenne, hogy egy könnyen átjárható interfészt adjon a különböző adatbázisok felé, ehelyett meg itt hülyéskednek.
Nagyjából egy ilyet kellett volna összehozni, ha maradunk a PHP elnevezéseinél:
interface PDOColumn {
function getTable();
function getName();
function getNativeType();
function getPDOType();
function getLength();
function getPrecision();
function getSQLType();
function getFlags();
}
Nem túlzottan törik össze magukat a Zend-nél, hogy kikupálják a PHP-t, pedig nem lenne egy nagy mutatvány. Ami a fenti interface-ben necces cucc, az a getFlags(). Nyilván ez is akármi lehet, de ezalapján már nem nehéz megmondani, mit kellett volna ezzel is csinálni: hegeszteni hozzá egy interface-t.
Aki kicsit is igényes a kódjára, kerülje el az ilyen fajta marhaságokat.