Na navigaci | Klávesové zkratky

Dibi 4: sluší mu přísný kabát?

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ý 😁

Mohlo by vás zajímat

Komentáře

  1. Jan Kuchař #1

    avatar

    Díky Davide!

    před 7 lety
  2. mIREK #2

    avatar

    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? 🙂

    před 7 lety | reagoval [3] David Grudl
  3. David Grudl #3

    avatar

    #2 mIREKu, už by se to mělo odesílat

    před 6 lety
  4. Pavel Janda #4

    avatar

    Ahoj. Je u Dibi nějaká možnost jak vypnout to automatické decodování jsonu?

    před 5 lety | reagoval [5] Pavel Janda
  5. Pavel Janda #5

    avatar
    před 5 lety

Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.


phpFashion © 2004, 2024 David Grudl | o blogu

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.