INTRANET    Institutu biostatistiky a analýz
Institut biostatistiky a analýz
LF MU
Kamenice 126/3
625 00 Brno
www.iba.muni.cz

PHP a frameworky

nový článek

Pro úspěšný programovací jazyk PHP dnes existuje více rozvinutých frameworků, tj. podpůrných aplikací usnadňující vývoj vlastních aplikací nebo jen abstrahující přístup k různým databázovým řešením (database abstraction layer). Dva úspěšní zástupci - databázová vrstva NotORM a Nette Framework – pocházejí od předních českých PHP programátorů. Tyto produkty jsou zajímavé open source licencí, pokročilým vývojem využívajícím poslední verzi PHP 5.3, rozšiřujícím se programátorským zázemím a v důsledku zvyšující se použitelností.


Níže uvedený text je k dispozici i v PDF formátu (171 kB).

Databázové frameworky

NotORM (Jakub Vrána, http://www.notorm.com/)

  • umí pracovat se všemi databázemi, které podporuje PDO, testovaná je s MySQL, SQLite, PostgreSQL a MS SQL.
  • z tabulek se přenáší jen ty sloupce, které se nakonec použijí, aniž by se jejich seznam musel kdekoliv specifikovat
  • vyžaduje konvenci v pojmenování sloupců – primární klíč je id, cizí klíč table_id, kde table je název odkazované tabulky
  • starší verze implementována v Nette frameworku

Výhody oproti Doctrine 2:

  • rychlá a snadná instalace (Doctrine 2 tvoří 333 souborů; je potřeba specifikovat adresář a jmenný prostor pro proxy; )
  • příjemná syntaxe (Doctrine 2 pro operace typu setřídění požaduje konstrukce v jazyku DQL)
  • vyšší rychlost (Doctrine 2 pokládá dotaz při každém průchodu cyklem)
  • nezávislost (část Doctrine 2 záleží na frameworku Symfony, což ale nemusí být vždy nevýhoda)
  • flexibilita (v případě, kdy se rozhodneme do vazební tabulky přidat sloupec s nějakou informací: v Doctrine 2 to znamená zahodit velkou část kódu a ještě více kódu napsat úplně od začátku)

Příklad:

<?php
include "NotORM.php";
$pdo = new PDO("mysql:dbname=shop");
$shop = new NotORM($pdo, null, new NotORM_Cache_Database($pdo));

$category = $shop->category[$_GET["id"]];
if (!$category) {
// 404
exit;
}
echo "<h1>" . htmlspecialchars($category["name"]) . "</h1>n";

$products = $category->product()
->where("disabled", 0)
->order("price")
->limit(10);
...

 

Aplikační frameworky

Nette (David Grudl, http://www.nette.org)

  • Zabezpečení formulářů - používá technologii, která eliminuje výskyt bezpečnostních děr a jejich zneužití, jako je např. XSS, CSRF, session hijacking, session fixation atd.
  • Disponuje ladícími nástroji, které vám pomohou zavčasu odhalit všechny chyby aplikace.
  • Aktivní komunita v ČR: http://nette.org/cs/komunita
  • Moderní Framework - AJAX / AJAJ, SEO, DRY, KISS, MVC, Web 2.0, cool URL – propracovaná podpora všech moderních technologií a koncepcí.
  • Vyzrálý objektový návrh - využívající vlastností PHP 5, komponent a událostmi řízeného modelování.
  • Pluginy a rozšíření - nabídka doplňků pro snadné použití ve vašich aplikacích - http://addons.nette.org/cs/
  • Open-source licence - framework můžete zdarma používat i v komerčních projektech.
  • Rozděluje práci mezi více programátorů a HTML kodérů – šablonovací sytém Latte
  • Lze výhodně kombinovat například se Zend Frameworkem.
  • Obsahuje databázové frameworky (layery) NotORM a Dibi, elegantního databázového správce Adminer (http://www.adminer.org/)

Výhody oproti Symfony:

  • snadná instalace, kompaktnost, odpadá nutnost používat CLI skripty
  • racionální implementace MVP (MVC) modelu
  • dokumentace v češtině (oproti pův. francouzské dokumentaci symfony!)

Výhody oproti Zend Frameworku:

  • možnost napojit jako minified php soubor
  • syntaxe využívající PHP namespaces je zkratkovitá ale zároveň intuitivní

Hlavní nevýhody Nette oproti 2 uv. výše:

  • nesrovnatelně menší uživatelská základna
  • pomalý vývoj , děravá dokumentace
  • neexistuje plnohodnotná podpora, záruka budoucího vývoje
  • omezená a stále mnohdy nefunkční knowledge base

Příklad: Skeleton

app/
models/
presenters/
templates/
.htaccess
bootstrap.php
document_root/
images/
.htaccess
index.php
 

Zjednodušená struktura dle J. Vrány:

models/
presenters/
static/
templates/
.htaccess
index.php

 Příklad: šablony
<ul n:if="$items">
{foreach $items as $item}
<li id="item-{$iterator->counter}">{$item|capitalize}</li>
{/foreach}
</ul>

MVP:

 

Odkazy, zdroje

Programátorská klávesnice a další utility: http://jakub.vrana.cz/utility/
NotORM v Nette: http://php.vrana.cz/notorm-v-nette.php, http://php.vrana.cz/kompaktni-skeleton-nette.php
Hodnocení Nette: http://php.vrana.cz/unikatni-vlastnosti-nette.php
Api Nette: http://api.nette.org/
Ukázky: http://pla.nette.org/
Videa o Nette: http://wiki.nette.org/cs/videa

Klíčová slova:
nezadáno

8.11.2011


Zpět


Komentáře, diskuse

Nové téma