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

Nette\Web\Html - pomocník PHP programátora

Malá knihovna pro generování (X)HTML kódu v PHP.

→ Download: Nette\Web\Html­.zip (revize 101) licence, překlad

Upozornění: Knihovna Nette\Web\Html se neustále vyvíjí. Aktuální informace najdete na webu Nette Framework. Popis v tomto článku postupně aktualizuji, takže některé komentáře pod ním mohou být již nesouvisející.

Způsobů, jak v PHP vygenerovat kód stránky, je celá řada. Od obyčejného volání příkazu echo, přes použití šablon, až po funkce DOM. Hledání nejlepší metody vede k paradoxu. Čím je programátor zkušenější, tím více tíhne k čistějším řešením, ideálně na bázi XML DOM. Tím však začne narážet na nové překážky a omezení a více času tráví jejich řešením a obcházením. Díky čemuž více tíhne k pragmatickým řešením, jako je třeba volání echo.

Ale posuzování vhodnosti jednotlivých způsobů není předmětem článku.

Seznamte se s Nette\Web\Html (dříve NHtml)

Generování HTML značek „na koleně“ vede k nepřehlednému kódu a tím i k větší náchylnosti k chybám. Vezměme si jednoduchý příklad:

…pokračování continue

clock 20. 12. 2006 pencil Nette comments Komentáře: 87


Vkládání souborů v Nette

Programový kód zpřehledníme rozdělením do více souborů. V případě OOP se nabízí ukládání každé třídy/interface (resp. několika úzce souvisejících tříd) do samostatného souboru. Tyto soubory je vhodné pojmenovávat podle nějaké své konvence. Následně je vkládáme do skriptů konstrukcí require_once. Opět, kvůli přehlednosti, bývá zvykem všechna vkládání umísťovat na začátky skriptů.

Odbočka: pokud použijete relativní cestu k souboru, require_once jej dohledá možná trošku nečekaným způsobem. Na include_path se také nerad spoléhám, proto se kloním k používání absolutních cest tímto způsobem:

require_once dirname(__FILE__).'/soubor.php';

Slabá místa

Tohle všechno sice přispívá ke zpřehlednění kódu, ale má to i slabé stránky:

  • vkládáme soubory, které třeba nebudeme potřebovat
  • ke každé třídě si musíme pamatovat název souboru

Obzvláště ta dualita třída ↔ soubor mi hodně vadí. Hledal jsem tedy nějaké flexibilní řešení, které by jednak odstranilo obě slabá místa, zároveň co nejvíce zjednodušilo programátorovi život a hlavně nekladlo nová omezení či pravidla.

…pokračování continue

clock 22. 3. 2006 pencil Nette comments Komentáře: 32


Nette a propojení stránky s kódem

Minule jsem ukazoval, jak lze s Nette stavět statické stránky. Ne náhodou jsem začal právě tímto tématem. Statické stránky a technika „dědění“ jsou totiž základním pilířem budování webového sídla. Je na webovém architektovi, aby připravil návrh website, grafik společně s HTML kodérem mohou pilovat vizuální podobu stránek a programátor je oživuje. Nette plně podporuje tuto pokrokovou filozofii skupinového vývoje.

Troška terminologie nikoho nezabije

Začínáme se věnovat oživování stránek, opusťme tedy pojem „statické stránky“. Jen by nás mátl.

Nette podporuje stránky zapsané nejen v jazyce XHTML, ale i HTML a XML (např. RSS kanály). Místo neobratného „HTML-XHTML-XML stránky“ budu dále používat termín dokumenty.

Upozornění: Článek se týká velmi staré verze Nette Framework, současná syntaxe je jiná.

Dokument je tvořen stromem elementů. Program může s touto hierarchií dále pracovat prostřednictvím tzv. DOM.

Základní jednotkou oživování dokumentů je komponenta. Jde o třídu (resp. objekt, podle kontextu), která je potomkem Component. Speciálním druhem komponenty je stránka (třída Presenter). Komponenty tvoří stromovou strukturu a jejím kořenem je vždy nějaký následník třídy Presenter. Tuto strukturu budu označovat jako COM. Nemá to nic společného s technologií COM od Microsoftu.

…pokračování continue

clock 17. 3. 2006 pencil Nette comments Komentáře: 41


Jak si rozumí Nette s Texy!

Ačkoliv obě aplikace Nette i Texy! jsou zcela samostatné jednotky, je možné je přimět k úzké spolupráci. Webdesignéry – příznivce Texy! by mohla potěšit tato ukázka:

<html>
<head>
    <title>Nette a Texy!</title>
</head>

<body>
<div id="main">

<nette:texy>
Welcome!
--------

Nette is a **rapid development framework**
for PHP. It enables PHP users to rapidly
develop smart and robust web applications,
without any loss to flexibility.

- Extremely Simple
- Event handling model
- Components
- No configuration
</nette:texy>

</div>
<div id="footer">
  Copyright &copy; DGX
</div>
</body>
</html>

Samozřejmě konečná syntaxe je ještě věcí bádání, a to nejen v tomto příkladě. Vzhledem k charakteru textu zvažuji i něco takového:

<pre nette:type="texy">

I **love** it!

</pre>

S obsahem vkládaným i v podobě Texy! syntaxe bude možné dále dynamicky pracovat. A tím je asi jasné, že další (a tak dlouho slibovaná) verze Texy! přijde společně s Nette.

clock 11. 3. 2006 pencil Nette comments Komentáře: 24


Nette pro statické stránky?

Žádný komplexní framework se nehodí pro jednoduché weby. Výhody se totiž projeví až od určité míry složitosti webové aplikace. V opačném případě práci spíš komplikuje.

Nette je framework, který se výborně hodí i pro tvorbu statických stránek. Ano, čtete dobře! Obyčejných statických stránek. Pojďme se na to podívat.

Vezměme si jednoduchou stránku homepage.en.html:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title id="_title">Welcome!</title>
</head>

<body>
  <div id="menu">
    <ul>
      <li><a href="...">Products</a></li>
      <li><a href="...">Testimonials</a></li>
      <li><a href="...">FAQ</a></li>
      <li><a href="...">About us</a></li>
    </ul>
  </div> <!-- /menu -->

  <div id="breadcrumbs">
    <a href="./">Home</a> &gt; Products
  </div>

  <div id="main">
    <h1>Welcome!</h1>

    <p>Lorem ipsum dollar sit.</p>
  </div> <!-- /main -->

  <div id="footer">
    <p>All rights reserved.</p>
  </div>
</body>
</html>

Jednotlivé stránky v rámci jednoho serveru se hodně podobají. Liší se sice v textu titulku, hlavním obsahu, ale mají stejné (či podobné) hlavičky, patičky atd. Jak jsem zmiňoval dříve, primární zásada Nette zní Nic nepsat dvakrát. Tak si ukažme v praxi, jak bez dvojího psaní vytvoříme stránku „kontakty“:

…pokračování continue

clock 10. 3. 2006 pencil Nette comments Komentáře: 63


phpFashion © 2004, 2010 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í.