Všechny dynamické jazyky nezávisle dospěly ke stejnému závěru: typy
vyhrály. TypeScript pohřbil čistý JavaScript, Python kapituloval, Ruby se
topí. AI dodala poslední hřebík do rakve duck typingu. Říkal jsem to od
roku 2007 a teď to konečně říkají i čísla.
PHPStan řekne, že preg_replace může vrátit null,
a vy to vyřešíte přetypováním (string). Gratuluju, právě
jste fatální chybu proměnili v tichý prázdný string. Ukážu, proč je
hlasitá chyba vždycky lepší než ta, o které nevíte.
Připravil jsem definitivní tabulky pravdy pro PHP 7.x i 8.x. Konec hádání,
co udělá sort() s podivnými stringy, jestli se dají
porovnávat DateTimy přímo, nebo kdy vám array_unique() potichu
sežere data. Stačí se podívat na průsečík a víte.
Přidejte k času 100 minut a dostanete dřívější výsledek než po
přidání 50. PHP aritmetika kolem přechodu na letní čas je tak absurdní,
že by ji nevymyslel ani Kafka. Rozebírám proč a ukazuju, jak jsem to opravil
v Nette Utils.
Celá komunita vám vtlouká do hlavy „prefer-const everywhere“ a lintery
vám to ještě automaticky vnutí. Jenže cpát const do každé
funkce není best practice, je to anti-pattern. Stačí dvě pravidla:
let pro proměnné, const pro skutečné konstanty.
Prázdný řetězec nebo NULL? Tahle zdánlivě banální otázka dokáže
rozložit dotazy, JOINy i nervy celých týmů. Ukážu, jak pomocí CHECK
constraintů v MySQL 8.0.16+ vynutit jeden přístup a skoncovat
s nekonzistencí jednou provždy.
Přímočaré přejmenování ENUM hodnot v MySQL je recept na katastrofu,
protože MySQL nahradí neznámé hodnoty prázdným řetězcem. Správný
postup má tři kroky: rozšířit, aktualizovat, uklidit. Jednoduché, když
víte jak.
Gettery a settery byly provizorní řešení, než PHP dospělo. Jenže nové
property hooks přinášejí záludnosti: ze signatury nepoznáte, jestli je
property čitelná nebo zapisovatelná, pole se chovají překvapivě a
reference vám podkopou validaci. Průvodce tím, co funguje a kde
číhá past.
Readonly vlastnosti slibují neměnnost dat, ale fungují spíš jako zámek na
dveřích: co se děje uvnitř místnosti, to neuhlídají. Rozebírám
záludnosti inicializace, mýty o konstruktoru, triky s referencemi a novinky
z PHP 8.4, které konečně uvolňují zbytečně utažené šrouby.
„Nemám čas“ v issue trackeru je jako říct Michelangelovi, ať vám
vymaluje obývák. Tyhle dvě slova spolehlivě rozpustí motivaci maintainera a
promění váš požadavek v digitální pomník lidské lenosti. 99 %
takových issues zůstane navždy nevyřešených.