Práce s konstantami v rámci NEONu a DI rozšíření
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- Bilbo
 - Člen | 16
 
Ahoj, řeším takový problém, možná už to někde bylo adresováno,
v tom případě se omlouvám.
Chtěl bych v rámci DI rozšíření v NEONu pracovat
s konstantami tříd.
Př.:
localization:
	messages:
		pairs:
			FOO:
				Some\Class::CONSTANT: Hodnota
				Some\Class::CONSTANT2: Hodnota2
No a teď bych nějak chtěl, aby výstup v kontejneru zachoval konstanty,
je to nějak možné? Klidně si tam napíšu nějaké zpracování sám, jenom
nevím jak.
Momentálně uvnitř rozšíření dělám něco ve stylu:
	protected static function parseContantsInMessages(array & $messages)
	{
		foreach ($messages as $key => &$value) {
			if (self::isConstant($value)) {
				$value = constant($value);
			}
			if (self::isConstant($key)) {
				$messages[constant($key)] = $value;
				unset($messages[$key]);
			}
			if (is_array($value)) {
				self::parseContantsInMessages($value);
			}
		}
	}
Výstup z tohoto parsování si pak vložím do servisy:
$builder->addDefinition($this->prefix('messages'))
				->setClass('Localization\Messages')
				->setArguments([$translator, $config->messages]);
Takže v kontejneru mám něco typu:
'pairs' => array(
		'FOO' => array(3 => 'Hodnota', 6 => 'Hodnota2'),
),
Líbilo by se mi ale víc, kdybych tam místo hodnot mohl mít normálně konstanty. Dá se to nějak chytře udělat? Díky moc!