Netbeans a datove typy v metodach
- Glottis
- Člen | 129
cao, kdyz se tu tak resili i IDE na vyvoj, mam dotazek na neco co me trapi a mozna nekdo vi. netbeans muzu napovedet jakeho typu jsou tridni promenne pres anotace klasikou:
<?php
class Trida {
/** @var UI/Form */
private $test;
}
?>
a netbeans to pak napovidaji. jenze @var jde pouzit jen u deklaraci a ne uz v metodach
<?php
class Trida {
public function test() {
$form = $this->getComponent("formularik");
}
}
?>
a tady uz mi nenapovi. coz je dost neprijemne. jak to resite?
dik :)
Michal
- Glottis
- Člen | 129
no ja to ale nechci u vstupnich parametru. to vim ze
<?php
/**
* @param \Ocs\Logs $logs
*/
public function setLogger(\Ocs\Logs $logs) {
$this->logs = $logs;
}
?>
ale kdyz si promenou naplnim az v metode
<?php
class Trida {
public function test() {
$form = $this->getComponent("formularik");
$form-> //tady mi u znenapovi ani kdyz dam pred metodu /** @param UI\Form $form */ co zje podl eme jen pro vstupni parametry :)
}
}
?>
- jiri.pudil
- Nette Blogger | 1032
<?php
class Trida
{
public function test()
{
/* @var $form Nette\Application\UI\Form */
$form = $this->getComponent("formularik");
}
}
?>
Trik je v tom, nepoužít phpDoc, ale normální komentář.
- castamir
- Člen | 629
Pokud má ta metoda (v tomto případě getComponent) definovanou anotaci @return, tak ti to podle toho bude napovídat. Problém getComponent bude ale asi v tom, že ti to může vrátit různé třídy (Např. vlastní třídu dědící od Control nebo třeba formulář).
Obejít se to dá způsobem, jaký popsal @jiri.pudil.
Editoval castamir (28. 2. 2013 9:37)
- hAssassin
- Člen | 293
coz je logicky a bylo to uvedeno castamirem
je to proto ze getComponent()
nevraci UI\Form
ale
proste jen IContainer
nebo neco podobnyho. Cili reseni by mohlo
byt toto:
/**
* @retrun Nette\Application\UI\Form
*/
public function tests() {
$form = $this->getComponent('cdrFilter');
/* @var $form Nette\Application\UI\Form */
$form->... // a tady uz to doplnovat musi
return $form;
}
Editoval hAssassin (28. 2. 2013 10:31)