Jak dostat pole range(0,50) do config.neon

- h4kuna
 - Backer | 741
 
Jak se má dvojitá dvojtečka chovat?
zadám-li
parameters:
    myIntegers: range(0,50)
dostanu
Nette\DI\Statement #3679
	entity private => "range" (7)
	arguments => array (2)
		0 => 0
		1 => 50
zadám-li
parameters:
    myIntegers: ::range(0,50)
dostanu
Nette\DI\Statement #d6c4
	entity private => "::range" (7)
	arguments => array (2)
		0 => 0
		1 => 50
Jsem očekával že dostanu vygenerované pole od 0 do 50. Nerozumím k čemu mi je Statement dobrý?
Zkoušel jsem to na sanboxu. php 5.6/7.0
Editoval h4kuna (30. 3. 2017 8:36)

- mkoubik
 - Člen | 728
 
@h4kuna to má několik vrstev:
První je parsování neonu, to má na výstupu klasické datové typy
php – pole, stringy, integery, atd. Pokud napíšeš do neonu
range, tak výstupem bude string "range". Jediný typ
co není v php je entita, což je string s nějakými (volitelně
pojmenovanými) parametry. Zapisuje se jako text(),
text(a, b, c) nebo text(foo: bar) a výstupem je
objekt Neon\Entity. Neon při parsování žádné php nespouští,
když napíšeš ::range(0, 50), tak výstupem je entita s názvem
"::range" a parametry 0 a 50.
Další je nette\di, které vezme tyhle data (ať už z neonu, php pole,
yamlu, …), prožene je rozšířeníma a vygeneruje DI kontejner. Interně
pracuje s DI\Statement, což je zase jen objekt popisující php
výraz – nijak ho nespouští, jen z něj vygeneruje kód.
No a nakonec se načte vygenerovaný kód kontejneru, vytvoří objekt
kontejneru a teprve když si vyžádáš konkrétní službu tak se spustí to
tvoje range(0, 50).
Editoval mkoubik (30. 3. 2017 16:54)