Nette DI 3.1: přechodová verze

před rokem od David Grudl  

Přechodové verze nepřinášejí novinky, ale mají za cíl upozornit pomocí notices na vše, co bude v nové velké verzi fungovat jinak a poradit s aktualizací. Týkalo se to třeba Latte 2.11 nebo čerstvě vydané Nette DI 3.1.

První změnou je oprava chování autowiringu, který nullable parametrům bez výchozí hodnoty již nepředává automaticky null a argument je potřeba explicitně uvést (nebo doplnit výchozí hodnotu):

class Foo
{
	public function __construct(?string $foo)
	{}
}

Konfigurace:

-	- Foo
+	- Foo(null)

Dále končí podpora pro anotace @return:

class FooFactory
{
-	/** @return Foo */
+	public function create(): Foo
	{
	}
}

Pokud je anotace použita v kódu třetí strany, doplňte typ v konfiguraci:

services:
	-
		create: FooFactory::create
		type: Foo

Uvnitř definic automaticky generovaných továren jsou deprecated klíče parameters. Zastaralé jsou také klíče dynamic (nahraďte za imported) a class v místě, kde by se mělo použít type:

services:
-	class: MyService
+	type: MyService
-	dynamic: yes
+	imported: yes

Dále symbol ... představující vynechaný argument se mění na _:

services:
-	- MyService(..., 123)
+	- MyService(_, 123)

V souborech NEON už není potřeba na začátku řetězce escapovat znak @:

services:
-	- MyService('@@example.com')
+	- MyService('@example.com')

Deprecated je metoda Nette\DI\Config\Loader::save(), pokud chcete konfiguraci exportovat, využijte přímo metodu adaptéru Nette\DI\Config\Adapters\NeonAdapter::dump().