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
+
0
-

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!