Co umi NetBeans
- mates
- Člen | 36
Zacinam s nette a v podstate skoro i s php, takze jsem potreboval dobre IDE a hlavne naseptavani. Cetl jsem neco v diskusi, ze neco umi Eclipse, neco PhpEd a neco NetBeans. S kamosem jsme si rozdelili ze ja budu zkouset NetBeans a on Eclipse. Takze tady moje prvni postrehy pro kamose a treba i pro nekoho jineho.
<?php
//tady je jina syntaxe od PhpEd
/* @var $app Application */
$app->... //NetBeans 6.5 naseptava
class Trida{
public function metoda1()
{
echo "metoda1";
}
public function metoda()
{
$this->... //netBeans 6.5 naseptava
}
}
$app = Environment::getApplication();
$ref = $app->getReflection(); //NetBeans 6.5 naseptava
$name1 = $app->getReflection()->getName(); //NetBeans 6.5 naseptava
$name2 = $ref->getName(); //NetBeans 6.5 naseptava
?>
Zkousel jsem i dnesni build NetBeans 7.0 rozil pro PHP je popisovan zde http://blogs.sun.com/netbeansphp/
- romansklenar
- Člen | 655
Pokud chceš komplexní test, mrkni se tady, ještě pořád jsem to ale nedopsal tak jak bych chtěl ;) s nějakým pokecem okolo, protože ne všechno může být z komentářů v kódu jasné.
- mates
- Člen | 36
romansklenar napsal(a):
Pokud chceš komplexní test, mrkni se tady, ještě pořád jsem to ale nedopsal tak jak bych chtěl ;) s nějakým pokecem okolo, protože ne všechno může být z komentářů v kódu jasné.
Prisli jsme jeste na neco jineho. Ty v popisu pises ze
<?php
/** @var $i ArrayIterator */
$i->
?>
nefunguje. Ale
<?php
$i = $neco->getIterator();
/* @var $i ArrayIterator */
$i->
?>
tak to uz facha. Nicmene kdyz jsem kombinoval a komentare jsem ruzne prehazoval, tak se dostavalo ruzne funkcnosti. Navic se mi zda ze je rozdil jestli v komentari pouzijes jednu nebo dve hvezdicky. Kazdopadne je to chovadi te NetBeans takove zenske.
- romansklenar
- Člen | 655
Já právě píšu, že
/* @var $i ArrayIterator */
$i->
s jednou hvězdičkou, se dvěma v tomto pořadí ani netestuju, protože
/** @var $i ArrayIterator */
není správný zápis phpDocumentoru
(nejdřív je uvedený typ, pak až proměnná), z phpDocumentoru umí číst
spolehlivě (z těch testovaných IDE) jen PhpED.
Smyslem toho testu je zjistit, zda-li IDE dokáže napovídat jen podle notace @var, když není k proměnné přiřazena hodnota (nebyla inicializována). Ten druhý případ co píšeš je samozřejmost (měly by to zvládnout všechna IDE, pokud ne tak se mu radši vyhnout).
Ale to už je OT a Nette se to nijak netýká, takže to zachráním ;)
PDT třeba nepochodí v Nette s tímhle:
/**
* @param Exception $e
*/
function paramTest($e) {
$e->getTrace(); // example
// PDT 2.1: works with syntax: @param $e Exception
// PDT 1.0.5: works with syntax: @param $e Exception
// Netbeans 6.5: works
// Netbeans 7 M1: works
// PhpED 5.6: works
}
Protože má psány všechny dokumentační komentáře takto:
@param ClassName
bez názvu proměnné $e
a ono to
potřebuje opačné pořadí (proměnná a pak až typ, což není v souladu
s phpDocumentorem, NB zase myslím potřebují název proměnné tam kde má
být jen nepovinný popis). To se dá ale někdy obejít pomocí type-hintingu
function paramTest(Exception $e)
.
Stejně tak třídní proměnné jsou v Nette psány takto v jednom řádku
/** @var ClassName */
a s tím si zase některá IDEčka
neporadí, protože to chcou mít ve třech řádcích řádcích jako klasický
dokumentační formulář… což je zbytečnost, roztahuje se tak jen
akorád kód.
EDIT:
Kdyby se všechna IDEčka držely phpDocumentoru tak je po starostech, tak ale
PDT a NB třeba vyžadují něco co není v souladu s jeho normou.
Editoval romansklenar (5. 2. 2009 20:45)
- David Grudl
- Nette Core | 8218
romansklenar napsal(a):
Kdyby se všechna IDEčka držely phpDocumentoru tak je po starostech, tak ale PDT a NB třeba vyžadují něco co není v souladu s jeho normou.
Co to poslat jako feature request?