Netbeans Nette Framework Plugin

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

redhead napsal(a):

Ach jo.. Já věděl, že to tak lehce nepůjde. Mohu se zeptat jaký bundle máte? Pouze PHP nebo nějaký Javový nebo full?

Pouze PHP.
Pokud ti to pomůže:

Product Version: NetBeans IDE 6.9 (Build 201006101454)
Java: 1.6.0_20; Java HotSpot(TM) Client VM 16.3-b01
System: Linux version 2.6.34-1-686 running on i386; UTF-8; cs_CZ (nb)
Userdir: /home/majkl578/.netbeans/6.9

Pandou upravený balíček funguje. Zkusím a dám echo. :)

Editoval Majkl578 (17. 6. 2010 20:28)

Aurielle
Člen | 1281
+
0
-

Taky mám pouze PHP:

Product Version: NetBeans IDE 6.9 (Build 201006101454)
Java: 1.6.0_20; Java HotSpot(TM) Client VM 16.3-b01
System: Windows 7 version 6.1 running on x86; Cp1250; cs_CZ (nb)
Userdir: C:\Users\Gmvasek\.netbeans\6.9

edit: nefunguje mi ani Pandou upravená verze
edit2: funguje :P

Editoval gmvasek (17. 6. 2010 20:33)

redhead
Člen | 1313
+
0
-

Na vědomí dávám, že Pandova úprava eliminuje některé funkce (tj. úplně všechny) pro vytvoření PHP projektu s Nette Frameworkem, čili fungují jenom šablony. To API tam není pro legraci, i když je plugin bez něho funkční. Zkouším buildovat se specification version. Please wait…

Majkl578
Moderator | 1364
+
0
-

Tak Pandova verze to posunula jen dál:

The Plugin Installer found problem timeout of loading Nette Framework[org.netbeans.modules.php.nette/1.0] while install the following plugins:
Nette Framework

Počkám na tvůj rebuild. :)

Ola
Člen | 385
+
0
-

Není ten plugin pro RC2? (soudě dle http://www.google.cz/search?…)

Editoval Ola (17. 6. 2010 20:48)

redhead
Člen | 1313
+
0
-

@Ola: Je, stahuju a instaluju právě už páté NetBeans za posledních 14 dní. Buildnu to na final (nějak mi uniklo, že už je) a doufám, že to pak bude fungovat. Držte palce.

Btw. jak se dá upravit soubor .nbm? Já ani nevěděl, že to lze, myslel jsem, že to je něco jako exáč pro NetBeans :)

Ola
Člen | 385
+
0
-

Je to normální zip soubor :-)

redhead
Člen | 1313
+
0
-

Je to normální zip soubor :-)

redhead FAILs! :)

Patrik Votoček
Člen | 2221
+
0
-

redhead napsal(a):

  • v Projects window schovává pro vývoj nepodstatné složky sessions, logs, temp

Dá se tohle někde vypnout? Do logu lezu hodně často a občas při ladění šablon se člověk potřebuje kouknout i co to generuje…

tak podle diskuse na Nette Jabber Roomu jsem to pochopil tak že to funguje takhle:

  • NetBeans 6.9 Beta – OK
  • NetBeans 6.9 RC1 – The plugin PHP APIs is requested in implementation version 201005312001.
  • NetBeans 6.9 RC2 – OK
  • NetBeans 6.9 Final – The plugin PHP APIs is requested in implementation version 201005312001.
Verze produktu: NetBeans IDE 6.9 (Build 201006111053)
Java: 1.6.0_20; Java HotSpot(TM) Client VM 16.3-b01
Systém: Windows 7 verze 6.1 běžící na x86; Cp1250; cs_CZ (nb)
Uživatelská složka: C:\Users\Vrtak-CZ\.netbeans\6.9

Je to někde na GitHubu?

Jinak super práce DÍKY.

PS: nic divnějšího než vývojářské IDE v češtině jsem nežral… (Nechápu jak jsem to mohl nainstalovat)

redhead
Člen | 1313
+
0
-

Dá se tohle někde vypnout? Do logu lezu hodně často a občas při ladění šablon se člověk potřebuje kouknout i co to generuje…

Nedá, pokud to potřebuješ jen někdy, tak stačí přepnout místo z Project window na Files, ale chápu, že to může být otravné, pokud tam chodíš velmi často. Takže bych to možná povolil úplně. Případně to nechám dojít k diskusi (co je lepší, povolit úplně všechno nebo jenom některé?).

Rychle než to buildnu :)

Ondřej Brejla
Člen | 746
+
0
-

Povolit vše ;-) Díky.

Editoval Ondřej Brejla (17. 6. 2010 21:17)

redhead
Člen | 1313
+
0
-

Tak můžete zkusit, ovšem opět jsem to musel buildovat s Implementation Version toho PHP APIs (což může dělat problémy)

Pro final verzi NetBeans 6.9:

www.utf-8.cz/…rk_final.zip

nightfish
Člen | 517
+
0
-

redhead napsal(a):
Tak můžete zkusit, ovšem opět jsem to musel buildovat s Implementation Version toho PHP APIs (což může dělat problémy)

S finální verzí 6.9 funguje. Velmi dobrá práce.

Patrik Votoček
Člen | 2221
+
0
-

u mě stále problém

Kde se dá zjistit kterou verzi api mám?

EDIT:
Nejde tam dát něco jako novější než? Místo = ?

EDIT2:
Tak podle všeho má CZ NetBeans jiné build číslo (už přeinstalovávám na EN)

Editoval vrtak-cz (17. 6. 2010 21:54)

nightfish
Člen | 517
+
0
-

vrtak-cz napsal(a):
Kde se dá zjistit kterou verzi api mám?

spustíš NB, menu Help → About ← tak nic, špatně jsem pochopil

bezpečně to funguje s verzí staženou z http://netbeans.org/…s/start.html?…

Editoval nightfish (17. 6. 2010 21:52)

Panda
Člen | 569
+
0
-

vrtak-cz napsal(a):

Kde se dá zjistit kterou verzi api mám?

V uživatelské složce pro Netbeans se v logu /var/log/messages.log pod „Turning on modules:“ vypisují všechny moduly i jejich verze.

redhead
Člen | 1313
+
0
-

v Users(Documents And Settings v XP)/username/.netbeans(skrytá)/6.9/

Patrik Votoček
Člen | 2221
+
0
-

tak je to fakt tak viz předchozí editovanej post… český netbeans má 201006111053… nicméně už jsem přeinstaloval na EN… takže to šlape…

Teoreticky by mohlo fungovat:
místo: org.netbeans.modules.php.api.phpmodule = 201006101454
dát: org.netbeans.modules.php.api.phpmodule > 1.30.1

Jdu nainstalovat zase CZ netbeansy abych to otestoval…

Editoval vrtak-cz (17. 6. 2010 22:11)

redhead
Člen | 1313
+
0
-

OK, všichni se teď domluvíme, že CS verze NetBeans si každej okamžitě odinstaluje, j? :D :D

Ola
Člen | 385
+
0
-

Funguje to suprově – fantastická práce – díky za ní.

Jinak můj FRL:

  • možnost do projektu přidat i dibi a texy (to je spíš na později)
  • napovídání u $iteratoru jeho metody a obecně u proměnných v šabloně dle jejich typů – tohle by se mi líbilo nejvíce
  • napovídání n:atributů (nebo už to tam je?)
  • ocenil bych jiné seřazení maker, nejlépe dle četnosti použití (tedy např. aby {$} bylo jako první) – nevím, jestli to jde
  • napovídání bloků, jak již bylo psáno
  • automatická zavináčová magie :) – možná hloupost, když se plánuje je v 1.0 odstranit, ale ušetřilo by to začátečníkům práci – možná by bylo vhodnější to udělat jako samostatnou appku?
  • možná přidat další „file typy“ jako Presenter, Control apod. v menu New po kliknutí pravým tl. na složku

Editoval Ola (17. 6. 2010 22:16)

davidm
Člen | 81
+
0
-

Paráda, funguje to skvěle. Dík moc!!

Ondřej Brejla
Člen | 746
+
0
-

Zdá se, že to funguje parádně :-) Moc se mi to líbí. Díky.

redhead
Člen | 1313
+
0
-

Ola napsal(a):

Funguje to suprově – fantastická práce.

Děkuji

  • možnost do projektu přidat i dibi a texy (to je spíš na později)

To je dobrý nápad, nějaké checkboxy

  • napovídání u $iteratoru jeho metody a obecně u proměnných v šabloně dle jejich typů – tohle by se mi líbilo nejvíce

Vím, že by to byl kill, ale zatím nevím jak to udělat, protože bych na to musel nějak nabindovat PHPCompletionProvider (a vlastně celý PHP editor, který rozpoznává typy a hledá fce a proměnné). Šlo by to, kdyby se uvnitř maker vyskytoval jenom PHP kód, ovšem Latte má vlastní syntaxi, u které by PHP řvalo.

  • napovídání n:atributů (nebo už to tam je?)

Nenapovídají se makra, ale uvnitř atributů by měli fungovat proměnné atd.. Bohužel zvýrazňování vázne (jak jsem psal objeví se při otevření souboru, jakmile něco přepíšu zvýraznění je pryč)

  • ocenil bych jiné seřazení maker, nejlépe dle četnosti použití (tedy např. aby {$} bylo jako první) – nevím, jestli to jde

Nevím zda-li to půjde na četnost použití, ale řazení tam možnost je (přeházet to natvrdo). Teď mě ale napadá, že by to možná i šlo dynamicky (na počet enterů). Uvidíme.

  • napovídání bloků, jak již bylo psáno

To bych nechal až to bude nějak nadrátováno na PHP interpreter (viz pod čarou)

  • automatická zavináčová magie :) – možná hloupost, když se plánuje je v 1.0 odstranit, ale ušetřilo by to začátečníkům práci – možná by bylo vhodnější to udělat jako samostatnou appku?

To samé mě napadlo taky a mám stejný důvod (1.0) to neimplementovat :)

  • možná přidat další „file typy“ jako Presenter, Control apod. v menu New po kliknutí pravým tl. na složku

Něco takového mám v plánu, něco jako přidání PHP Class, PHP Interface, atd..


Takže dál:

  • na GitHub to nahraju, jakmile zprovozním git na nově přeinstalovaném noťasu (všechny ty ssh klíče a co já vim co to všechno má být..).
  • pro případné zájemce poskytnout finanční podporu, jak by jste si to představovali? PayPal? Převod?
  • jinak pište další návrhy, já mám další cíl celkem jasný, zprovoznit PHP interpreter a zobat požadované info požadované v šablonách přímo z vykonaných php skriptů. Ovšem nastává pár otázek:
    • zprovoznit i RobotLoader pro nahrávání extendovaných tříd atd.? Pokud ne, jak je includovat?
    • jak řešit předané proměnné view, pokud jejich počet/název závisí na parametrech view (render/action metod). Ale v tomto případě bude lepší to parsovat přímo z php souboru.

Ale teď si nechám trochu čas na oddech, ležím v tomhle NetBeans API bordelu už 2 týdny :D a už se mi o tom zdají noční můry.

Patrik Votoček
Člen | 2221
+
0
-

redhead napsal(a):

  • na GitHub to nahraju, jakmile zprovozním git na nově přeinstalovaném noťasu (všechny ty ssh klíče a co já vim co to všechno má být..).

Můžeš to hodit aspoň někam ke stažení pokusil bych se poladit tu CZ verzy…

  • pro případné zájemce poskytnout finanční podporu, jak by jste si to představovali? PayPal? Převod?

PayPal tlačítko DONATE… Mají ho snad všechny OSS projekty…

redhead
Člen | 1313
+
0
-
  1. Už instaluju TortoiseGIT, snad to tam dneska ještě nahodim.
  2. To tlačítko (jako formulář) sem asi nevložím, takže odkaz:

Přispějte na vývoj

Děkuji všem, co něco málo pošlou :) Pokud by se někdo aktivně podílel na vývoji, rád mu dám nějaký podíl ;)

redhead
Člen | 1313
+
0
-

Tak to máte na GitHubu https://github.com/…ework-Plugin

Pitrsonek
Člen | 13
+
0
-

Parada hned jdu predelat plugin pro CakePHP .-)
Eh to byl for.

JakubS
Člen | 15
+
0
-

redhead napsal(a):

NetBeans Nette Framework Plugin v1.0 (Download)

  • vytvořit nový Nette Framework projekt (New Project → PHP Application → 3× NEXT → zaškrtnout → FINISH)

Je možné zapnout Nette plugin pro stávající projekty?

redhead
Člen | 1313
+
0
-

To je v režii NetBeans, nikdy jsem to nedělal, ale je možné, že když vytvoříš nový projekt s PHP Application a vybereš From Source (nebo jak se to jmenuje), kde určíš složku ze které se projekt má vytvořit, ale nezkoušel jsem.

h4kuna
Backer | 740
+
0
-

ze stavajicivh projektu mi to slo vytvorit, pouzivam Eclipse a kdyz jsem toto zkusil podarilo se mi to rozchodit

iguana007
Člen | 970
+
0
-

Mě to funguje i u projektů, které nebyly vytvořené jako Nette, ale jako klasická PHP aplikace. Nainstaloval jsem NetBeans 6.9 Final, pak plugin a nakonec otevřel již existující projekt vytvořený v NetBeans 6.8 a jede to jak po másle :)
Super pomůcka!! Díky redheade ;)

Achse
Člen | 44
+
0
-

Hej to je krutopřísný projekt. Palec nahoru…

Jen bych doplnil, v šablonách se vypne:

  • standardní napovídánído HTML,
  • zvýrazňování a napovídání do PHP,
  • a chybně to podbarvuje poznámku.

Jakmile v *.phtml souboru neco obalim do <php ... ?> uvnitř by se to melo chovat jako klasické PHP, což se ale nechová. Viz. obrázek:

Zobrazuje jak chybné podbarvení poznámky tak nerespektování značek <php ... ?>.

Editoval Achse (18. 6. 2010 11:31)

redhead
Člen | 1313
+
0
-

Děkuji za bug report :)

Co se týče HTML tak to se napovídá (aspoň u mě :) ). Ovšem prioritu má napovídáním maker (to se bude ještě měnit, taky mě to štve), když napíšeš <di a CTRL+MEZERA tak se ti objeví napovídání maker, pokud sjedeš úplně dolů měl bys vidět napovídání pro html (<div>). Ale bude se to měnit.

A PHP: je otázkou zda-li je ok mít v šablonách php kód (a nepřesunout nějakou větší logiku do presenteru). O tohmle vím, ale problémem je, že nevím proč se to nechová jako php kód. Nastaveno bych to měl mít správně. Budu to ještě řešit.

A na koment se podívám. Takové využití mě nenapadlo. Asi budu muset počítat všechny výskyty složených závorek.

bene
Člen | 82
+
0
-

Jelikož používám Netbeans, chtěl jsem se do toho pustit kdysi sám, ale z časových důvodů to nebylo možné.
Zasloužíš si obdiv a velké díky.
Od uživatelů netbeans je Donate snad poviností :-D.

Jinak, nevím jestli to tu už bylo napsáno, ale můj první postřeh je, že když definuji {? $errors = $form->errors}, tak mi to ve foreach nenapovídá, {var $errors => $form->errors} je ok, ale to je jen detail. Ještě pokud to bude umět klasické php napovídání v uvození <?php ?>, tak už to bude dokonalé.

GREAT JOB

Aurielle
Člen | 1281
+
0
-

Napovídání Latte syntaxe v šablonách i při psaní standartního HTML kódu je dost otravné…

Honza Kuchař
Člen | 1662
+
0
-

Pokud to jde, udělal bych to napovídání maker až po tom, co napíši {

ic
Člen | 430
+
0
-

trošku se to komplikuje

Honza Kuchař
Člen | 1662
+
0
-

Tak jsem se trošku zamyslel…

  • Myslím, že takové ty akce jako přidat presenter, přidat model, přidat šablonu, tlačítko na přechod z presenteru na šablonu a tak, bude aktuální, až bude informace ukládat a spravovat Nette či nějaký projekt na správu projektu v Nette (pokud se správně pamatuji, byl nějaký pokus o vznik jednoho takového projektu, jmenoval se pokud vím NADRO) Nemyslím si, že by zrovna toto měl zajišťovat plugin do IDE. (Pokud vím, tak Zend i Symfony to nějak tak řeší)
  • Na čem bych pracoval nejvíce je zvýrazňování a napovídání v šablonách a poté na tom spojení presenter <→ templates. Případně nějaký čudlík, který by zase zavolal nějaký příkaz v tom projektu na správu projektu, který by vytvořil metodu v presenteru a vytvořil šablonu. Ale znova, opravdu by se podle mě samotné zapisování do souborů mělo dít v tom nějakém externím projektu.
  • makra napovídat, až napíšu { nebo n:
redhead
Člen | 1313
+
0
-

@Honza Kuchař: myslíš projekt jako php-kovej projekt? Tzn. nějaký Nette scaffolding? Pokud ano, tak by to bylo samozřejmě lepší. Pokud ne, tak jsem tě nepochopil o jaký projekt by mělo jít. Desktopová naprosto jiná aplikace? A jinak bych v tom zas neviděl problém, proč by to neměl dělat tenhle plugin.

Ad napovídání maker: předělám to.

Ola
Člen | 385
+
0
-

Mimochodem, tohle by se možná mohlo hodit:

https://dip.felk.cvut.cz/…2010dipl.pdf

Například kapitola 4.5.3 – nešlo by použít virtuální kód? – například {$…} by se mohlo virtuálně nahradit za <?php echo htmlspecialchars(...) ?> a ostatní makra podle jejich „předpisů“ v souboru LatteMacros.php

Editoval Ola (19. 6. 2010 14:49)

Ondřej Brejla
Člen | 746
+
0
-

Přesně tohle právě čtu ;-)

Honza Kuchař
Člen | 1662
+
0
-

redhead napsal(a):

@Honza Kuchař: myslíš projekt jako php-kovej projekt? Tzn. nějaký Nette scaffolding?

Naprosto přesně. Má to jedinou chybku, nic takového zatím neexistuje. A myslím, že než to psát přímo do pluginu pro IDE, bude lepší napsat ten scaffolfing v PHP a potom na něj udělat jen konektor do toho pluginu v IDE. Ušetří se tím práce dalším lidem, kteří budou chtít napsat třeba nějaký plugin pro jiné IDE. A určitě se to bude psát lépe v PHPku, protože tam si můžeš jednoduše zjistit, kde je co umístěno. (složky s presentery, názvy šablon a tak podobně)

redhead
Člen | 1313
+
0
-

Ola napsal(a):

Mimochodem, tohle by se možná mohlo hodit:

https://dip.felk.cvut.cz/…2010dipl.pdf

Například kapitola 4.5.3 – nešlo by použít virtuální kód? – například {$…} by se mohlo virtuálně nahradit za <?php echo htmlspecialchars(...) ?> a ostatní makra podle jejich „předpisů“ v souboru LatteMacros.php

Tenhle dokument byl můj první tip na to udělat ten plugin. Co se týče toho virtuálního kódu, samozřejmě by to šlo, ale ničemu to nepomůže (btw taky mě to napadlo). Ale co si tím zamýšlel, že by to vyřešilo? Ale co se týče implementace, tak jednoduchá makra by byli v pohodě, ale ty složitější, které se musí parsovat už i v php celkem složitě (include, block, ..). Ale obecně by to ničemu neprospělo byl by to kód na pozadí, ale nedělal by žádné zvýrazňování, kompletaci, atd..


@Honza: tak ok, pokud se toho někdo ujme, ten FUSE plugin využívá taky php scaffolding, takže bych prakticky věděl jak zhruba na to..

Editoval redhead (19. 6. 2010 19:53)

Ola
Člen | 385
+
0
-

Pokud by se vytvořil ten virtuální kód ve kterém by našeptávalo php, tak by šlo udělat donahrávání proměnných do šablon podobně jako to dělají pluginy pro zend a symfony – potom by se korektně napovídaly i typy proměnných (pokud jsou k dispozici třeba v phpdocu, samozřejmě).

Mimochodem, nějaký scaffolding vytvářel Honza Marek: https://github.com/…eScaffolding

Editoval Ola (19. 6. 2010 22:15)

redhead
Člen | 1313
+
0
-

Problém je, že ani jeden z těch pluginů nemá vlastní šablonovací jazyk. Za ten PHP parser děkuju, to mi usnadní hodně práce. Ovšem k tomu aby fungovali oba jazyky bude potřeba něco víc než virtuální kód (aspoň si to myslím). Největší problém je celé to PHP API není zdokumentováno.. Takže se musím inspirovat ze sourců ostatní pluginů, které také nebývají moc dokumentovány.

Pokud by se v šablonách využíval pouze PHP kód místo maker (<?php ?>), atd. tak by to šlo, ale dostat tam ještě latte jazyk, latte kompletaci, latte syntaxi, atd. bude problém.

Editoval redhead (20. 6. 2010 10:50)

Ola
Člen | 385
+
0
-

Nejsem si jistý, jestli to myslíme stejně. Imho není potřeba mít 2in1, tedy latte našeptávání i php našeptávání v jednom bloku toho souboru. Nestačí všude, kromě pár vybraných maker jen php? Na to by virtuální kód měl stačit, pokud tu diplomku chápu správně. Latte našeptávání by se hodilo jen u spec. případů, tedy hlavně u maker plink, link, control, widget, block, include, …, ale všude jinde (if, foreach, $, _, =) by mělo stačit php – vše by mělo jít převést – jediný problém jsou helpery, ale to by možná šlo vyřešit tak, že by php kód byl uvozen buď od { po | (od | do } by se poté vytvořila další část pro latte našeptávání) nebo od { do }.

Editoval Ola (20. 6. 2010 11:49)

pekelnik
Člen | 462
+
0
-

Nevím jak je řešené přepínání kontextů v editoru, ale nešlo by aby ten js pasrser fungoval se stejnou myšlenkou jako latte, že pokud za { není mezera, bere se celé makro jako normální proměnná?

<script>

$.get({link foo});

</script>

Editoval pekelnik (21. 6. 2010 0:50)

redhead
Člen | 1313
+
0
-

@Ola: tak jsem to schválně zkusil a ono to nějak magicky funguje (dosud jsem se domníval, že ten virtuální kód umí něco trochu jiného). Je tu ovšem jedno velké ALE. Pokud vložím nějaký virtuální kód který je delší než ono makro a případně „posune“ to co jsem napsal do makra a co se transformuje do php kódu, vzniká hodně špatná chyba a to ta, že completion si myslí, že kurzor je ve virtuálním kódu jinde než v makru a vyhodnotí kompletaci špatně, příklad:

{default color => $def|aults['color']}
if(!isset($color)){$co|lor=$defaults['color']}

(znak pajpy má být kursor)

U toho kursoru, když se snažím o kompletaci, měla by najít ty začínající na $def, ale najde ty na $co. Ono to přesně takhle, jak jsem ukázal, nefunguje, ale alespoň pro představu. Bohužel tohle je chyba NetBeans a myslím, že i v té diplomce se o něčem takovém píše. Teď jen doufat, jestli to opraví.


@pekelnik: asi tě úplně nechápu. Tebou psaná syntaxe se chová jako generovaný kód v php, tzn. podobně jako:

<script>
$.get(<?php echo $neco; ?>);
</script>

@vrtak-cz: koukám, že ono celé je to ještě v plenkách, tak snad se s tím nějakou dokážou porvat.

Editoval redhead (22. 6. 2010 16:25)

jarks
Člen | 94
+
0
-

Díky za tuhle práci! Právě jsem plugin vyzkoušel na ostré 6.9 a funguje.

Co nejvíc postrádám, je označování párového makra. Prostě když položím kurzor na {if}, rozsvítí se {/if}, které k tomu patří. Totéž u {foreach} a {for}. Je to podobné, jako u HTML tagů – třeba <div>. Tohle dělá Aptana Studio 1.5 a je to skutečně dost praktické, pokud máte nějaké složitější struktury.

Dál je otázka, kdy se mají nabízet možnosti při psaní maker. Očekával jsem, že když napíšu {$, nabídne se mi seznam proměnných a když nějakou odklepnu, vloží se a doplní se pravá závorka. Funguje to ale tak, že nejdřív musím potvrdit uzavření makra – doplní se pravá závorka a až potom můžu dát CTRL+space a vidím seznam proměnných.

U {widget} a {control} jsou v našeptávací nabídce názvy komponent až úplně dole, asi by naopak měly být první.

A ještě jeden divočejší návrh. Kdybych měl něco takového:

{if $person}
    <ul>
      {foreach $person as $p}
        <li><a href='{plink Homepage:detail, $p->id}'>{$p->prijmeni} {$p->jmeno}</a></li>
      {/foreach}
    </ul>
{/if}

Bylo by úžasné, kdyby uvnitř {foreach} po napsání {$ vyjel seznam proměnných včetně prvků toho pole úplně nahoře. Něco jako

$p->id
$p->prijmeni
$p->jmeno
$p->ulice
$p->obec

A ještě malá poznámka: Formátovací funkce ALT+SHIFT+F si maker nevšímá, takže kód spíš rozhází.