PHP 8.6 vychází 19. listopadu. DressCode pro něj kód přepisuje už teď. 16 dní Přechod na novější PHP →

Upgrade Dibi a Texy

Databázová vrstva Dibi od verze 4.1 a Texy od verze 3.0 přejmenovaly třídy, konstanty a parametry a část API zrušily bez náhrady. Balíček dresscode/upgrade-deegee ty změny nese: DressCode podle něj přepíše insertId() na getInsertId(), Type::DATETIME na Type::DateTime i volání pomocných metod Texy, které se přestěhovaly do Texy\Helpers, a u zrušeného API řekne, co dál.

Instalace

composer require --dev dresscode/upgrade-deegee phpstan/phpstan
vendor/bin/dresscode upgrade today

Druhý řádek už kód přepíše: upgrade today vezme data balíčku sám, bez konfigurace, a styl kódu nechá, jak je. Postup a co dělat s tím, co zbude, popisuje Upgrade kódu.

Staré API pohlídá i každodenní kontrola, když konfigurace přidá typy a sadu deprecations, viz Jak funguje upgrade knihoven:

typeAnalysis: phpstan

use:
	- perCs           # váš standard
	- deprecations

Co se opraví

Repozitář psaný pro Dibi 4 a Texy 3.1 v projektu na současných verzích:

public function insert(array $data): int
{
	$this->db->query('INSERT INTO articles', $data);
	return $this->db->insertId();  // Method `Dibi\Connection::insertId()` is replaced by `Connection::getInsertId()`.
}


public function render(string $text): string
{
	$html = $this->texy->process($text);
	return $this->texy->unProtect($html);  // Method `Texy\Texy::unProtect()` is replaced by `Texy::unprotect()`.
}


public function getColumnType(): string
{
	return Type::DATETIME;  // Constant `Dibi\Type::DATETIME` is replaced by `Type::DateTime`.
}

Po dresscode upgrade today:

public function insert(array $data): int
{
	$this->db->query('INSERT INTO articles', $data);
	return $this->db->getInsertId();
}


public function render(string $text): string
{
	$html = $this->texy->process($text);
	return $this->texy->unprotect($html);
}


public function getColumnType(): string
{
	return Type::DateTime;
}

Z Dibi se opraví konstanty Dibi\Type, Fluent a ovladačů dřív psané velkými písmeny, konstanty statické fasády dibi (dibi::AFFECTED_ROWS na Dibi\Fluent::AffectedRows), affectedRows() a insertId() na getAffectedRows() a getInsertId() i u fasády, Dibi\DateTime::modifyClone($modify) na modify($modify), DibiExtension22 na DibiExtension3 a konstruktory FileLogger a Panel s filtrem null. Z Texy třídy s předponou Texy na jmenný prostor Texy\, pomocné metody Texy a Utf přesunuté do Texy\Helpers, escapeHtml() na htmlspecialchars(), unescapeHtml() na Texy\Helpers::unescapeHtml() a v projektu na Texy 3.0 až 3.1.0 na html_entity_decode(), vlastnost $cleaner na $htmlOutputModule, konstanty HtmlElement a přejmenované parametry Modifier.

Co zůstane na vás

Kde náhrada není, DressCode místo ohlásí a řekne, co dělat dál. Třeba metodu translateArgs(), kterou Dibi 4.2 zrušilo, nebo výstupní režimy, které Texy už nemá:

Method `Dibi\Connection::translateArgs()` is forbidden: there is no replacement; the hook is gone; the SQL is generated by `translate()`, which is final and takes the arguments as variadic parameters.
Method `Texy\Texy::setOutputMode()` is forbidden: there is no replacement; the output is always HTML5.

Z Dibi se dál hlásí rozšiřující metody extensionMethod(), trait Dibi\Strict, modifyClone() bez argumentu a __sleep() a __wakeup() potomka Connection, místo kterých patří __serialize() a __unserialize(). Z Texy výstupní režimy HTML4 a XHTML i s setOutputMode(), getOutputMode() a $xhtml, kódování jiné než UTF-8 ($encoding, Utf::toUtf(), utfTo() a utf2html()), metody modulů, které se ve verzi 3.2 staly privátními, TexyMacro pro Latte 2, $removeOptional, Modifier::$cite a trait Texy\Strict.

Co knihovna jen tiše označila jako zastaralé, v datech není; s typy to DressCode ohlásí, a kde anotace náhradu řekne, i přepíše podle upgrading.declarations.deprecatedMember. Změny chování data nezachytí vůbec.

Co balíček pokrývá

knihovna verze
dibi/dibi 4.1 až 5.1
texy/texy 3.0 až 3.2

Jak postupovat po jedné hlavní verzi, popisuje Upgrade kódu.

Zobrazit na GitHubu · Nahlásit problém se stránkou na GitHubu · 2. 11. 2026