Složené závorky v boostrapu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
_Martin_
Generous Backer | 679
+
0
-

Ahoj,
stáhl jsem si dnes alpha verzi Nette a objevil jsem v bootstrapu následující zápis:

// Setup router
{
	$router = $application->getRouter();

	$router[] = new NRoute('index.php', 'Homepage:default', NRoute::ONE_WAY);

	$router[] = new NRoute('<presenter>/<action>[/<id>]', 'Homepage:default');
};

Připadám si jak naprostý začátečník, když se ptám: „k čemu jsou tam ty složené závorky“?

Mikulas Dite
Člen | 756
+
0
-

K ničemu, pouze vizuálně oddělují bloky kódu. Na rozdíl třeba od C++ neoddělují scope, takže

<?php
$scope = 0;
{
	$scope = 1;
}
var_dump($scope);

vypíše 1. Každopádně v nejnovější revizi to už není, takže to byl jenou nějaký pokus.

Edit: Jo aha, to jsem mluvil trošku mimo, protože jsi neuvedl celý ten kód ; ) Je tam použitá lambda funkce, též anonymní funkce. Tady je teda scope oddělený, viz ty manuály.

Editoval Mikulas Dite (19. 3. 2011 15:37)

Patrik Votoček
Člen | 2221
+
0
-

je tam registrována jako callback (anonymní fce) kterej se spustí až při spuštění aplikace. tj routy se nastaví až když dojde ke spuštění applikace.

_Martin_
Generous Backer | 679
+
0
-

Ten kód jsem uvedl celý. Já totiž neměl na mysli vývojovou verzi, ale tu relativně stabilní (s označením Alpha 2). V ní jsou na rozdíl od vývojové jen složené závorky bez callbackou. Proto jsem se divil, k čemu to tam je.

Edit: už začínám tušit – stahoval jsem prefixovanou verzi a on to tak nejspíš schroupal převodník z pět-trojkové. Neměl by to spíš nahradit normální funkcí? Bug nebo feature?

Editoval _Martin_ (20. 3. 2011 21:56)

David Grudl
Nette Core | 8149
+
0
-

To je vedlejší efekt převodníku 5.3 → 5.2, nemá to na nic vliv.