2019. július 17., szerda

Gyorskeresés

PHP PDOStatement::getColumnMeta

Írta: | Kulcsszavak: php . pdostatement . getcolumnmeta . interface

[ ÚJ BEJEGYZÉS ]

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 :U ), é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. :N

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.

Hozzászólások

(#1) Athlon64+


Athlon64+
(őstag)

[ Értesítő. ]

(#2) j0k3r! válasza Athlon64+ (#1) üzenetére


j0k3r!
(senior tag)

azert a masik figyelmeztetest is vedd figyelembe:

"This function is EXPERIMENTAL. The behaviour of this function, its name, and surrounding documentation may change without notice in a future release of PHP. This function should be used at your own risk."

hatha a kovetkezo verziora mokolnak vele valamit :)

some men just wanna watch the world burn...

(#3) Athlon64+ válasza j0k3r! (#2) üzenetére


Athlon64+
(őstag)

Lényegében emiatt és nem a másik figyelmeztetés miatt néz ez ki úgy, ahogy. Ha a támogatási warningot levennék, akkor is ez lenne a helyzet.

(#4) j0k3r! válasza Athlon64+ (#3) üzenetére


j0k3r!
(senior tag)

kicsit off: probaltal mar ennek a segitsegevel mvc-ben popo osztalyt generalni (ef database first-hoz hasonlot)? egyatalan lehet ilyet? ha lenne tablak kozti kapcsolat, akkor jol sejtem, hogy azt a flags tarolna?

some men just wanna watch the world burn...

(#5) Athlon64+ válasza j0k3r! (#4) üzenetére


Athlon64+
(őstag)

Nem túrom fel a régi kódom, de valamire használtam benne PDO-t, de a flags-ben a primary key, not null és hasonlók vannak. A kapcsolatokat az adatbázisnak megfelelően kell lekérdezni mindig valamilyen SELECT-tel vagy beépített függvénnyel.

A code-first nem tudom, hogyan működik a színfalak mögött (POCO-ként önmagában nem működhet, de nem visz rá a lélek, hogy felfedezzem, mit is generál le), de mondjuk hülyeségnek is tartom az egészet. :D Nyilván össze lehetne valamit hozni PHP-val is, de sokkal célravezetőbb adatbázisból generálni az entitásokat.

(#6) j0k3r! válasza Athlon64+ (#5) üzenetére


j0k3r!
(senior tag)

"de sokkal célravezetőbb adatbázisból generálni az entitásokat." - szerintem is, ezert is kerdeztem a db-first megkozelitest :) (igazabol az stdClass is meg tudja oldani valahogy, bar azt meg ki kell egesziteni nemi funkcioval)

some men just wanna watch the world burn...

(#7) sztanozs


sztanozs
(PH! addikt)

Hát a PHP-t nem objektumorientáltságra találták ki... Erre pont ideillik (asszem) tildy korábbi aláírása :DDD

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#8) j0k3r! válasza sztanozs (#7) üzenetére


j0k3r!
(senior tag)

hat ha nem is arra talaltak ki, de azert az elmult evekben szerintem jo iranyba fejlodott a nyelv, oo szempontbol is. ha a fentebbi interfacet kicsit modositanank ugy, hogy a getFlags() valami ColumnInfo objektumot adna vissza (IsNullable, IsPrimaryKey, stb.), akkor mar egeszen hasznalhato lenne a dolog.

" Erre pont ideillik (asszem) tildy korábbi aláírása " - bovebben? :)

[ Szerkesztve ]

some men just wanna watch the world burn...

(#9) sztanozs válasza j0k3r! (#8) üzenetére


sztanozs
(PH! addikt)

Erre gondoltam :)

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#10) Athlon64+ válasza sztanozs (#7) üzenetére


Athlon64+
(őstag)

A PHP nem lenne rossz, ha a készítőiben és a használóiban is meglenne az, hogy értelmes módon használják, és ne a wannabeket támogassa mindenki.

További hozzászólások megtekintése...
Copyright © 2000-2019 PROHARDVER Informatikai Kft.