Jak na @method v generovaných továrničkách
- Tomáš Votruba
- Moderator | 1114
V generovaných továrničkách mi nefungují @method
anotace.
MyControl.php
/**
* @method setFrontEnd(bool)
*/
class MyControl extends Nette\Application\UI\Control
{
/** @var bool */
protected $frontEnd = FALSE;
public function getFrontEnd() // test method, see bellow
{
return $this->frontEnd;
}
}
IMyControl.php
interface IMyControl
{
/** @return MyControl */
public function create();
}
config.neon
services:
- IMyControl
Presenter
class MyPresenter extends Nette\Application\UI\Presenter
{
public function createComponentMyControl(IMyControl $factory) // passed by Kdyby\Autowired
{
$control = $factory->create();
$control->setFrontEnd(TRUE);
dump($control->getFrontEnd()); // FALSE
}
}
Kde bych mohl mít chybu? Děkuji.
Editoval Tomáš Votruba (26. 4. 2014 10:52)
- David Matějka
- Moderator | 6445
To by vubec nemelo mit spojitost s generovanou tovarnickou. magicky metody jsou vlastnost Nette\Object, takze by to melo fungovat vsude, kde od nej dedis.
- Tomáš Votruba
- Moderator | 1114
Tak to mám, jen jsem to omylem nenapsal. Doplněno do původního dotazu.
- David Matějka
- Moderator | 6445
@Saman: https://forum.nette.org/…ate-to-write
@Tomas Votruba: vyber by nemelo zalezet na tom, jak ten objekt
vytvaris, pokud dedi od Nette\Object
.. zkus tu chybu co nejvice
izolovat – vytvorit instanci rucne… (to jsem testoval a fungovalo mi to)..
a verze nette?
- Tomáš Votruba
- Moderator | 1114
@matej21 Vše funguje, díky.
Nakonec jsem měl chybu v tom, že jsem nevolal parent::__call
v přetížené metodě __call
.
Editoval Tomáš Votruba (21. 7. 2014 0:33)