Před pár dny vyšla nová verze Nette (2.1.0), a tak jsem se dnes pustil do aktualizace všech projektů, které mám momentálně rozdělané. Z čistě pragmatického hlediska nepřináš aktualizace žádný přímý benefit – stojí to čas, aplikace nebude o nic rychlejší a ještě k tomu je nutno ji upravit kvůli BC změnám.
I tak se to ale vyplatí. Nejsem sice žádný Nette evangelista, takže nesleduji aktuální novinky kolem frameworku. Je ale nesmysl pracovat na něčem, o čem vím, že už v době předání bude zastaralé.
Během migrace jsem narazil jen na pár nekompatibilit (seznam budu možná průběžně rozšiřovat)
Connection::table() deprecated
Chybová hláška Nette\Database\Connection::table() is deprecated; use Nette\Database\Context::table() instead
Vyřešil jsem jednoduše – stačilo v autowiringu mé třídy (config.ini, konstruktor…) přepsat typ objektu:
public function __construct( \Nette\Database\Connection $db ) {
na
public function __construct( \Nette\Database\Context $db ) {
Pokud používáte defaultní Authenticator, pak je třeba stejnou úpravu udělat i v něm.
Nová dvojtečková notace
Heuristicky: vypadá to, že se jen změnila poloha dvojtečky v Nette\Database při používání JOINů. Nebyl jsem schopen nalézt ucelenou dokumentaci, jestli v tom není nějaký další háček, každopádně změny následujícího typu vše vyřešily:
->where(‚content_lang:language_id‘,1)->select(‚content_lang:*,content.*‘) ;
změnit na
->where(‚:content_lang.language_id‘,1)->select(‚:content_lang.*,content.*‘) ;
wherePrimary() místo find()
Všude, kde jsem v Nette\Database používal metodu find() jsem musel přepsat na wherePrimary().
Mailer je samostatný objekt
Dříve byl mailer součástí Message, stačilo zavolat $message->send() a email se odeslal pomocí Maileru, který jste nastavili. Dnes je Mailer samostatný objekt, kterému předáte message. Stačí jen upravit:
$message->send();
na
$mailer->send( $message );
Nová ID u políček ve formuláři
Některé formuláře se mi zcela rozsypaly, a to v případě, kdy jsem styloval prvky formuláře pomocí #id selektoru. Dříve byl název políčka ve formátu frmNazevFormulare-nazevpolicka, nyní přibyla pomlčka: frm-NazevFormulare-nazevpolicka.
Jinak je migrace (aspoň z mé zkušenosti) relativně snadná a rychlá záležitost a určitě ji doporučuji.