Složené závorky v boostrapu
- _Martin_
- Generous Backer | 679
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
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
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
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)