Už je to šílených dvanáct let, co jsem na tomto blogu představil knihovnu Dibi. Dnes se dočkala čtvrté verze. Využívající všech předností moderního PHP 7.1.
Vývoj a testování verze 4.0 trvalo 11 měsíců a čítá 114 komitů, zapojilo se do něj několik autorů, kterým děkuji.
A co je nového? Dibi 4 běží v přísném režimu, tedy s
declare(strict_types=1)
. Je plně typovaná, tedy parametry a
návratové hodnoty metod mají nativní typehinty. Což si vyžádalo jednu
drobnou změnu: metody fetch()
nebo fetchSingle()
v případě, že už v tabulce není další řádek, vracejí nově
null
na místo false
, protože návratové hodnoty
mohou být nullable,
nikoliv falseable. Doplněná byla podpora pro JSON (automaticky
dekóduje tyto sloupce), kontroluje, zda s modifikátorem %i
nebo
%f
nepoužijete řetězec, co není číslo, přibyl
Dibi\Expression
a Connection::expression()
(příklad), interface
IConnection
a spousta dalších drobností.
Protože Composer se dnes považuje za standard, jak instalovat balíčky, archív ZIP i s minifikovanou verzí zmizel v propadlišti dějin.
Změnou je, že metody Connection::query()
a
Fluent::execute()
nevrací v případě DML příkazů počet ovlivněných
řádek, ale objekt Dibi\Result
. Počet řádek zjistíte z něj
($res->getRowCount()
) nebo jako dříve
($connection->getAffectedRows()
).
Dále objekt Dibi\DateTime
je nyní potomkem DateTimeImmutable .
Má v sobě implementovaný magický mechanismus, který by měl odhalit, pokud
někde v kódu stavíte na tom, že je mutable, a došlo by tak k chybě.
Pak jsem dal pryč několik historických reliktů nebo zbytečností, kompletní přehled najdete v changelogu. Ač ten seznam může vypadat dlouze, v praxi byste krom výše zmíněného neměli na žádný BC break narazit.
A ještě pro úplnost: Dibi od verze 3.1 podporuje mikrosekundy, což
může ve specifickém případu vést k BC breaku (viz
vlákno) a od verze 3.2 podporuje jen třídy s namespaces (tedy krom
třídy dibi
).
Co bude dál?
Určitě zajímavé by bylo do Dibi doplnit podporu pro nativní bindování parametrů, třeba pro upload binárních souborů je to nutnost. A s tím úzce souvisí i prepared statements. Občas zaznívají žádosti o vylepšení fluent interface, volání uložených procedur atd.
Zcela na rovinu říkám, že budoucnost stojí zejména na tom, jestli budu mít za Dibi nějaké příspěvky. Takže pokud máte Dibi rádi, nastavte prosím měsíční donation a svět bude nadále krásný 😁
Komentáře
Jan Kuchař #1
Díky Davide!
mIREK #2
Tak přemýšlím nad tím donation – jak poznáš, že to je z Dibi a ne z Nette, když odkaz je donation stránka z Nette a i PayPal to v prvním kroku ukazuje? 🙂
David Grudl #3
#2 mIREKu, už by se to mělo odesílat
Pavel Janda #4
Ahoj. Je u Dibi nějaká možnost jak vypnout to automatické decodování jsonu?
Pavel Janda #5
#4 Pavle Jando, Solved – https://github.com/…i/issues/282
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.