Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

Ohlasy na školení Nette Framework

Rád bych vás pozval na prosincové termíny školení Nette Framework. Školení se uskuteční nejen v pracovních dnech, ale i o víkendu, nejen v Praze, ale i v Brně (vypsáno s otevřeným termínem). Pokud se chcete naučit vyvíjet efektivně webové aplikace, získat konkurenční výhodu nebo zvednout svou cenu na trhu práce, jste vítáni.

Ing. Václav Stoupa, pořadatel WebExpo 2008

Školení PHP od Davida Grudla mě naučilo nejen jak v Nette Frameworku programovat webové aplikace, ale poodhalilo a vyjasnilo i mnoho vlastností PHP 5, o kterých jsem dosud nevěděl, ač jsem v PHP již nějaký ten rok programoval. Skvělý objektový návrh Nette vás při psaní aplikace automaticky vede k používání programátorských „best practices“. Framework vám rozhodně nehází klacky pod nohy svojí složitostí ani vás nesvazuje omezeními. Právě naopak, cestu vývoje před vámi úhledně zametá a šikovnými knihovnami vám pomáhá se po ní pohybovat rychleji a bezpečněji.

Roman Sklenář

Školení stálo za to. I když v Nette už nějakou chvilku dělám, ujasnil jsem si pár věcí, které mi zatím nebyly úplně jasné, nebyly řešené na fóru ani v dokumentaci nebo nejdou tak snadno vyčíst z kódu, nebo jsem prostě jen využíval pětinu jejich možností.

Tomáš Witek

Dověděl jsem se hodně nových věcí a hlavně jsem si vyjasnil všechny nejasnosti. Měl jsem připraveno plno otázek, ale jak David postupně pokračoval ve výkladu, tak mi nakonec snad žádná otazka nezbyla. Ve finále nám David ukázal, jak děla aplikaci v Nette přímo on. Zeptal se nás co bychom si udělali za aplikaci, takže to neměl pripravené. Byl to docela mazec, jen škoda, že jsme neměli více času.

Matej Kravjar

S väčšinou vecí, ktoré sa na školení preberali, som sa pri skúmaní Nette stretol, ale práve školenie tomu dalo nadhľad a vyplnilo medzery a nejasné miesta, a naviac ukázalo možnosti o ktorých som ani netušil.

Tomáš Vítek

Okolo Nette se pohybuju v podstatě od jeho zveřejnění – ohlášení, ale až po školení jsem se dokopal k tomu si v něm napsat celou aplikaci a až školení mi ukázalo ty drobnosti, které Nette obsahuje a kvůli kterým je to tak úžasný nástroj pro vývoj aplikací. Ty drobnosti sice jsou v dokumentaci, ale člověk je snadno přehlédne, když je tam o nich jen třeba věta, dvě. Když jsem si pak v Nette psal první větší aplikaci a využíval jsem u toho všechny drobnosti, o kterých jsem se na školení dozvěděl, vážně mě to strašně bavilo. PHP je hloupý pseudoobjektový jazyk, ale s Nette na něj nemá ani C#. :) A komu by to nestačilo, dostane krásný diplom, ehm… pardon… certifikát.

clock 27. 11. 2008 pencil Nette comments


Sraz Nette Framework v pátek 18. 7.

Sdružení rodičů a přátel Nette Frameworku vás srdečně zve na tradiční členskou schůzi vývojářů webových aplikací. Program bude zahájen volbou nástěnkáře, bude následovat recitace básní oslavujících Nette Framework, poplácávání se, kritizování a posmívání se ostatním frameworkům a konzumace alkoholických nápojů dle vlastního výběru.

Účast nutná!

  • termín: pátek 18. července od 16 hodin
  • místo konání: Brno, Schnitzel House na Běhounské 15 (mapka)

Pokud máte chuť probrat věci týkající se vývoje webových aplikací v Nette Frameworku, ale také vývoje frameworku samotného, budu rád, když dorazíte. Jde čistě o neformální setkání. Abych mohl vybrat a zamluvit nějaký prostor (salonek v restauraci blízko centra – máte tip?), potřeboval bych vědět, kolik lidí asi tak dorazí, takže prosím svou účast potvrďte v komentářích. Jestli pojedete autem a můžete někoho vzít, napište svůj kontakt a odkud jedete.

Těším se!

clock 15. 7. 2008 pencil Nette comments Komentáře: 27


Návrh struktury presenters/views

Jak správně navrhnout strukturu aplikace psané v Nette v pojmech presenter a view (resp. action).

Presenter vs. view

Pro objektový návrh presenterů by se měla dodržovat stejná pravidla, která platí pro OOP jako takové. Konkrétně mám na mysli tezi, že objekt by měl plnit pouze jeden úkol.

Presentery s více pohledy (views) nebo akcemi (actions) svádějí tento princip porušovat. Svým způsobem i sebesložitější aplikaci mohu narvat do jednoho presenteru s obrovským počtem pohledů. A každý z nich bude používat jen svůj okruh komponent a parametrů. Asi cítíte, že to je špatný přístup.

Druhým extrémem je pro každý pohled vytvořit vlastní presenter. Ano, jde také o extrém, ale z hlediska návrhu poměrně čistý (dokonce předchozí verze Nette tak byly koncipované a třída Presenter se jmenovala Page).

Jakou zvolit cestu mezi oběma mantinely? Doporučuji řídit se tímto pravidlem:

V jednom presenteru sdružujte jen ty pohledy, které používají společné komponenty a persistentní parametry.

V tu chvíli začne presenter plnit jen jeden úkol – obhospodařovat své komponenty a persistentní parametry. Pravidlo má navíc příjemný důsledek – automatické předávání persistentních parametrů v Nette bude pracovat velmi efektivně a pouze ve váš prospěch.

Vytvořte hierarchii presenterů

Všechny presentery ve vaší aplikaci by měly tvořit hierarchii. Přinejmenším vytvořte jednoho společného předka. Díky tomu se vyhnete opakování stejného kódu na více místech aplikace. Společný předek může v metodě startup() zajistit připojení k modelu nebo zkontrolovat uživatelská oprávnění.

S hierarchií úzce souvisí automatické předávání persistentních parametrů. Pokud potřebujete, aby se určitý parametr automaticky přenášel mezi skupinou presenterů, tak ho deklarujte na úrovni jejich předka.

Buď final, nebo abstract

Pokuste se hierarchii presenterů navrhnout tak, aby každý z nich představoval buď list, nebo větev. Listem je myšlen presenter, od kterého už nelze odvozovat nové třídy (je deklarovaný pomocí klíčového slova final, na obrázku označen jako leaf). Větev je naopak presenter, který lze použít pouze k odvozování (je deklarovaný jako abstract). Nette nedovolí abstraktní presentery vůbec adresovat.

Tato technika zajistí, že každá akce presenteru bude v celé struktuře jedinečná.

clock 28. 5. 2008 pencil Nette comments Komentáře: 4


Laděnka, jak se vám líbí?

Laděnka je užitečnou každodenní pomocnicí PHP programátora. Její oficiální jméno zní Nette\Debug.

Aktuální informace najdete na webu Nette Framework.

Každý ladič je dobrým kamarádem s funkcí var_dump, která podrobně vypíše obsah proměnné. Bohužel v prostředí HTML výpis pozbude formátování a slije se do jednoho řádku, o sanitizaci HTML kódu ani nemluvě. V praxi je nezbytné var_dump nahradit šikovnější funkcí. Tou je právě Debug::dump()

$arr = array(10, 20.2, TRUE, NULL, 'hello');

Debug::dump($arr);
// včetně jmenného prostoru Nette\Debug::dump($arr);

vygeneruje výstup:

array(5) {
  [0] => int(10)
  [1] => float(20.2)
  [2] => bool(true)
  [3] => NULL
  [4] => string(5) "hello"
}

Dalším užitečným nástrojem ladiče jsou stopky s přesností na mikrosekundy:

Debug::timer();

// princi můj malinký spi, ptáčkové sladce již sní...
sleep(2);

$elapsed = Debug::timer();
// $elapsed ≈ 2

Tohle všechno jsou sice užitečné drobnosti, skutečným killerem je však jiná Laděnčina vlastnost. Zpráva o nezachycené výjimce nebo chybě poskytuje vývojáři důležité informace o tom, kde a proč k ní došlo. Standardní výstup v PHP vypadá asi takto:

Standardní podoba nezachycené výjimky

Pusťme však ke slovu Laděnku. Po aktivaci příkazem Debug::enable() nám předvede svou nejvíce sexy polohu:

Nezachycená výjimka v provedení NDebug

Takto vypadá výjimka, takto vypadá vygenerovaná chyba. To je pak jiné ladění, co?

Snad nemusím dodávat, že vypisování chyb se nesmí nikdy dostat na produkční server. Je to výborná společnice na pracovišti, ale nikdy ji nesmíme brát sebou ven. Je totiž děsně ukecaná a vyzradí na vás úplně všechno (nicméně kdyby k tomu náhodou došlo, má integrovaný systém pro skrytí citlivých políček, např. hesel). Na produkčním serveru je však možné nechat výpisy ukládat do adresáře nebo odesílat administrátorovi emailem.

→ Download: Nette\Debug.zip, licence, překlad

(doplněno: mám na vás prosbu…)

clock 30. 1. 2008 pencil Nette comments Komentáře: 38


Nette\Object - taťka všech objektů

Je známo, že objekty se do jazyka PHP dostaly spíš jako nezvaní hosté. Docela příznačným rozdílem mezi jazykem, který byl jako objektový již navrhován, a jazykem, který se jím stal k velkému překvapení samotných tvůrců, je v absenci resp. přítomnosti společného předka všech tříd. Object Pascal deklaruje TObject, DOT.NET má System.Object a v Javě nebo Ruby stojí v hierarchii nejvýše Object (je delikátní, že nejzákladnější třída bývá pojmenována objekt). V PHP nic takového neexistuje.

Základní třída obvykle deklaruje metody pro sebereflexi. Například metodu vracející název třídy. Je to sice detail, ale vždycky mi připadalo tuze ošklivé mixovat hezký objektový kód s voláním pro-objektové funkce get_class:

$a = $obj->myMethod();
$class = $obj->getClass(); // hezké
$class = get_class($obj); // ošklivé

…pokračování continue

clock 1. 12. 2007 pencil Nette comments Komentáře: 40


phpFashion © 2004, 2012 David Grudlo webu

Pokud není uvedeno jinak, podléhá obsah těchto stránek licenci Creative Commons BY-NC-ND Creative Commons License BY-NC-ND

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.