NEON – ani skalár, ani array
- Peppy
- Člen | 137
Reagujem sám na seba (teda, pravda, spamujem): Database substitutions – fungujú?
Mám tento NEON:
services:
robotLoader:
run: true
factories:
class: FactoryModel
authenticator:
factory: ["@factories", createAuthenticatorService]
database:
factory: ["@factories", createDatabaseService]
arguments: %database% # Kritický, problémový riadok
model:
class: BaseModel
arguments: ["@factories"]
production < common:
database:
username: root
password:
hostname: localhost
database: cmsdb
prefixes:
prefix:
suffix:
Skúšal som formou: [%database%]
aj %database
, pri
obidvoch, mi vypíše warning/exception.
V prvom prípade: InvalidStateException – parameter ‚database‘
is not scalar. Odvoláva sa to na Container.php:
elseif (!is_scalar($val = Nette\Utils\Arrays::get((array) $that->params, explode('.', $param)))) {
257: throw new Nette\InvalidStateException("Parameter '$param' is not scalar."); // <= tu.
}
V druhom prípade: Warning: array_map() Argument #2 should be an array. V ContainerBuilder.php:
private function argsExport($args)
{
153: $args = implode(', ', array_map(array($this, 'varExport'), $args)); // <= tu.
Editoval Peppy (4. 8. 2011 16:07)
- nanuqcz
- Člen | 822
Ahoj, neměla by sekce database
být odsazená?
production < common:
database:
username: root
password:
hostname: localhost
database: cmsdb
prefixes:
prefix:
suffix:
Jinak, [%database%]
je správně.
A taky mě napadá, určitě tady mají být ty uvozovky?
factory: ["@factories", ...
Já to vždycky píšu bez nich :-)
prostě jen factory: [@factories, ...
- Peppy
- Člen | 137
Tá database je odsadená v reáli, tu to akosi som to zmazal tabulátor. No, skúsil som už aj bez úvodzoviek, a na tom nezáleží – iba v Netbeans to má problém „higlightovať“ kvôli invalide character-u. Stále ten istý problém.
// EDIT:
Dokonca je tam aj ten tabulátor (v topicu), len akosi ho nežerie, a nechce to
posunúť.
Editoval Peppy (4. 8. 2011 16:08)
- Peppy
- Člen | 137
Nó! Už sme sa niekde dostali! Pre zmenu ku UnexpectedValueException, presnejšie:
Unable to create service 'database', value returned by factory '{closure}' is not object.
Ale to už je vec továrničky, lebo nevracia nič, momentálne. Dík všetkým. Bolo to zastaralou verziou Nette.