Presentazione di ATal, un template engine pensato apposta per php. Ispirato a PHPTAL, ma con una filosofia tutta php. Supporta autoloading, plugin, modificatori, ereditarietà, ecc. Insomma da provare!
Sviluppo web dall'antichità all'avanguardia e ritorno
PHP 5.3 Attribute Template Language (Template Engine)
1. Asmir Mustafic - PUG 2011 1
ATAL
Template Attribute Language
(per PHP)
18/07/11 Asmir Mustafic
2. ATal Template Engine
2
Template scritti in XML
Istruzioni al TE tramite
attributi
Namespace separato
Pensato per il mondo
PHP
Espressioni PHP like
PHP 5.3
Completamente
estensibile
Asmir Mustafic - PUG 2011 18/07/11
3. Perche ATal?
3
Ci sono tanti altri template engine, perche usare
ATal?
Un solo esempio…
Asmir Mustafic - PUG 2011 18/07/11
5. ATal
5
<ul t:if="count($utenti)">
<li t:foreach="$utenti as $u">{$u->nome}</li>
</ul>
Asmir Mustafic - PUG 2011 18/07/11
6. Caratteristiche di un
Attribute Template Language
6
Attributi per esprimere le istruzioni per il template engine.
L’“inizio” e la “chiusura” delle istruzioni per il TE è “gratuita”
grazie alla chiusura obbligatoria dei tag xml
Non ci sono istruzioni riddondanti (if, endif, {/if}, {/loop} %end% {/foreach} )
Un istruzione scritta una sola volta
Migliore supporto per editor WYSIWYG
Gli editor solitamente ignorano gli attributi che non conoscono
Aggiungono fastidiosi “?” per le istruzioni dei TE tradizionali
Assicura che l’output prodotto sia XML valido
Assenza di tag non chiusi, mal annidati, auto escape
Asmir Mustafic - PUG 2011 18/07/11
7. Caratteristiche di ATal
7
Pensato per PHP (sintassi avanzata)
Plugin, estensioni, filtri
Modificatori e Pre-Modificatori anche su parametri
Inclusione altri template (anche porzioni)
Autoescape
In continuo sviluppo
Supporto per i namespace, closure, e autoloading.
Se proprio non vi piace, allora provate PHPTal…
Asmir Mustafic - PUG 2011 18/07/11
8. 8 ATal
Uso e caratteristiche
Asmir Mustafic - PUG 2011 18/07/11
18. Raw output (ancora…)
18
<div>
{raw:$html}
</div>
<script type="text/javascript">
//<![CDATA[
{raw:$rawJs}
//]]>
</script>
<script type="text/javascript" t:modifier="escape:'javascript'">
var utente = '{$nomeUtenteUnsafe}'; // ok
</script>
Asmir Mustafic - PUG 2011 18/07/11
19. Conflitti
19
<script type="text/javascript" t:no-conflicts="">
//<![CDATA[
var a = function(s){ alert(s); };
a('hello');
//]]>
</script>
<script type="text/javascript" t:no-conflicts="<|>">
//<![CDATA[
var a = function(s){ alert(s); };
a(<$fooBar>);
//]]>
</script>
Asmir Mustafic - PUG 2011 18/07/11
20. I18n
20
<h1 t:translate="">Il mio nuovo sito</h1>
<h1 t:translate="nome=$arg">Articolo che parla di %nome</h1>
<h1 t:translate-n="$quanti">Ci sono %0 bambini</h1>
<img alt="descr" title="Descizione" t:translate-attr="alt;title"/>
<img alt="Descizione di %nome" t:translate-attr="alt(nome=$arg)" />
Asmir Mustafic - PUG 2011 18/07/11
21. In fine…
21
Attualmente “usato in privato”, ma affidabile...
Dove trovo tutta sta roba?
http://opensource.mercuriosistemi.com !
A qualcuno interessa?
Contributi? Documentazione? Codice?
Farlo conoscere al grande pubblico?
Altre Domande?
Asmir Mustafic - PUG 2011 18/07/11