Jak na @method v generovaných továrničkách

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Tomáš Votruba
Moderator | 1114
+
0
-

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

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

Kde by v mém kódu mohla být chyba?

Quinix
Člen | 108
+
0
-

Neměla by se ta metoda jmenovat createComponentNazevKomponenty ?

Tomáš Votruba
Moderator | 1114
+
0
-

Tak to mám, jen jsem to omylem nenapsal. Doplněno do původního dotazu.

Šaman
Člen | 2668
+
0
-

A ona anotace @method zpřístupňuje i protected property?

David Matějka
Moderator | 6445
+
0
-

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

@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)