<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Basmati Tree &#187; PHP</title>
	<atom:link href="http://www.basmatitree.net/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.basmatitree.net</link>
	<description>nerdish recipes for a better tomorrow</description>
	<lastBuildDate>Tue, 19 May 2009 09:31:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Primi passi con CodeIgniter (parte 3)</title>
		<link>http://www.basmatitree.net/2008/10/14/primi-passi-con-codeigniter-3/</link>
		<comments>http://www.basmatitree.net/2008/10/14/primi-passi-con-codeigniter-3/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 09:33:44 +0000</pubDate>
		<dc:creator>Palicao</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://www.basmatitree.net/?p=17</guid>
		<description><![CDATA[Il Model è la parte dell&#8217;applicazione che si occupa di gestire i dati; nella maggior parte dei casi si tratta di dati che vengono salvati su database. Il controller farà uso dei metodi disponibili nella classe model per ricevere i dati di cui ha bisogno.
Nella nostra applicazione di gestione di magazzino, possiamo immaginare di avere [...]]]></description>
			<content:encoded><![CDATA[<p>Il Model è la parte dell&#8217;applicazione che si occupa di gestire i dati; nella maggior parte dei casi si tratta di dati che vengono salvati su database. Il controller farà uso dei metodi disponibili nella classe model per ricevere i dati di cui ha bisogno.</p>
<p>Nella nostra applicazione di gestione di magazzino, possiamo immaginare di avere una tabella che cataloghi tutto il contenuto del magazzino. La tabella, molto semplicemente potrebbe essere:</p>
<pre>CREATE TABLE `oggetti` (
`id` int(11) NOT NULL auto_increment,
`nome` varchar(50) collate utf8_unicode_ci NOT NULL,
`scaffale` int(11) NOT NULL,
`quantita` int(11) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;</pre>
<p>Il modello corrispondente, quindi, potrebbe essere:</p>
<pre>class Oggetti extends Model {
  var $nome;
  var $scaffale;
  var $quantita;

  function Oggetti () {
    parent::Model();
  }

  function mostra_tutti () {
    // estrae tutti gli elementi dal database
  }

  function mostra_scaffale ($id_scaffale) {
    // estrae gli elementi filtrandoli per scaffale
  }

  // più i soliti metodi crea, modifica, cancella,...
  function crea ($nome, $scaffale, $quantita) { }
  function modifica ($id, $nome, $scaffale, $quantita) { }
  function cancella ($id) { }
}</pre>
<p>Quindi in buona sostanza una classe che implementi i classici metodi <a href="http://it.wikipedia.org/wiki/Tavola_CRUD" target="_blank">CRUD</a> più altri metodi d&#8217;utilità.</p>
<p>Per interrogare il DB, CodeIgniter fornisce una versione del pattern <a title="Active Record su Wikipedia" href="http://en.wikipedia.org/wiki/Active_record_pattern" target="_blank">Active Record</a> che semplifica la creazione di query e ci permette di scrivere codice indipendente dal tipo di database usato (attualmente i driver disponibili sono mssql, mysql, mysqli, oci8, odbc, postgres e sqlite).</p>
<p>La classe ActiveRecord fornisce metodi per la selezione, la modifica, l&#8217;inserimento e la cancellazione di dati. Inoltre sono supportate le funzioni più comuni (sum, avg&#8230;), le join, le transazioni e molto altro.</p>
<p>A questo punto possiamo entrare più nel dettaglio delle nostre funzioni e fare qualche esempio pratico:</p>
<pre>  function mostra_tutti () {
    $out = array();
    $this-&gt;db-&gt;select('nome, scaffale, quantita');
    $this-&gt;db-&gt;order_by('nome');
    $query = $this-&gt;db-&gt;get('oggetti');
    foreach ($query-&gt;result() as $row) {
      $out[] = $row;
    }
    return $out;
  }</pre>
<p>Per semplificare la sintassi è anche possibile utilizzare il chaining dei metodi:</p>
<pre>$query = $this-&gt;db-&gt;select('nome, scaffale, quantita')
              -&gt;order_by('nome')
              -&gt;get('oggetti');</pre>
<p>Per quanto riguarda la modifica e l&#8217;inserimento invece basta passare ai metodi insert() e update() un oggetto o un array di valori. In questo caso passeremo l&#8217;oggetto $this, ma potremmo anche creare un array od un oggetto ad hoc.</p>
<pre>  function crea ($nome, $scaffale, $quantita) {
    $this-&gt;nome = $nome;
    $this-&gt;scaffale = $scaffale;
    $this-&gt;quantita = $quantita;
    $this-&gt;db-&gt;insert('oggetti', $this);
  }</pre>
<pre>
<pre> function modifica ($id, $nome, $scaffale, $quantita) {
    $this-&gt;nome = $nome;
    $this-&gt;scaffale = $scaffale;
    $this-&gt;quantita = $quantita;
    $this-&gt;db-&gt;where('id', $id);
    $this-&gt;db-&gt;update('oggetti', $this);
  }</pre>
</pre>
<p>Molto semplicemente la cancellazione sarà:</p>
<pre>  function cancella ($id) {
    $this-&gt;db-&gt;where('id', $id);
    $this-&gt;db-&gt;delete('oggetti');
  }</pre>
<p>Rimando come al solito alla guida per un ulteriore approfondimento della classe <a title="The Database Class" href="http://codeigniter.com/user_guide/database/index.html" target="_blank">Database</a> e dell&#8217;<a title="ActiveRecord" href="http://codeigniter.com/user_guide/database/active_record.html" target="_blank">ActiveRecord</a>. Inoltre consiglio di dare anche un&#8217;occhiata al meccanismo di <a title="Database Caching Class" href="http://codeigniter.com/user_guide/database/caching.html" target="_blank">Caching</a> di CodeIgniter che può alleggerire di molto il carico sul database.</p>
<p>A questo punto siamo pronti per il lato di presentazione della nostra applicazione: la view, che affronterò nella prossima lezione.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basmatitree.net/2008/10/14/primi-passi-con-codeigniter-3/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Primi passi con CodeIgniter (parte 2)</title>
		<link>http://www.basmatitree.net/2008/07/20/primi-passi-con-codeigniter-2/</link>
		<comments>http://www.basmatitree.net/2008/07/20/primi-passi-con-codeigniter-2/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 19:50:51 +0000</pubDate>
		<dc:creator>Palicao</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://www.basmatitree.net/?p=16</guid>
		<description><![CDATA[Il manuale di CodeIgniter definisce il controller così:
A Controller is simply a class file that is named in a way that can be associated with a URI.
In realtà il controller nel paradigma MVC è quello che si occupa di gestire l&#8217;input e l&#8217;output dell&#8217;utente creando una sorta di &#8220;ponte&#8221; tra model e view. In effetti [...]]]></description>
			<content:encoded><![CDATA[<p>Il manuale di CodeIgniter definisce il controller così:</p>
<p><dfn>A Controller is simply a class file that is named in a way that can be associated with a URI.</dfn></p>
<p>In realtà il controller nel paradigma MVC è quello che si occupa di gestire l&#8217;input e l&#8217;output dell&#8217;utente creando una sorta di &#8220;ponte&#8221; tra model e view. In effetti il controller in CodeIgniter è entrambe queste cose.</p>
<p>Immaginiamo di dover scrivere un&#8217;applicazione per la gesitione di un magazzino. Scriveremo allora una classe controller chiamata Magazzino simile a questa:</p>
<pre>class Magazzino extends Controller {
  function elenco() {
    // elenca tutto il contenuto del magazzino
  }

  function scaffale($codice_scaffale) {
    // elenca il contenuto di un determinato scaffale del magazzino
  }
}</pre>
<p>Salvando questa classe nella cartella system/application/controller/magazzino.php automaticamente CodeIgniter renderà disponibile l&#8217;output dei due metodi che abbiamo scritto rispettivamente agli indirizzi: <strong>misito.com/index.php/magazzino/elenco</strong> e <strong>miosito.com/index.php/magazzino/scaffale/a12</strong>.</p>
<p>In particolare nel secondo caso passerà alla funzione scaffale il codice scaffale &#8216;a12&#8242;.</p>
<p>Ovviamente si possono passare più parametri alle funzioni che ne hanno bisogno continuando ad aggiungerli separati da <strong>/</strong>. Si può anche migliorare la leggibilità degli indirizzi rimuovendo &#8220;index.php&#8221; con un htaccess simile a:</p>
<pre>RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]</pre>
<p>Ma non basta, perchè CodeIgniter ci permette anche di organizzare i controller in cartelle e sottocartelle o di definire nuove regole di &#8220;routing&#8221; aggiungendo regole al file system/application/config/routes.php.</p>
<p>Per queste ed altre funzioni avanzate, rimando alla guida ufficiale di CodeIgniter, in particolare alla pagina <a title="Controllers, CodeIgniter User Guide" href="http://codeigniter.com/user_guide/general/controllers.html" target="_blank">Controllers</a> e <a title="URI Routing, Toggle Table of Contents CodeIgniter User Guide" href="http://codeigniter.com/user_guide/general/routing.html" target="_blank">URI Routing</a>.</p>
<p>Alla prossima lezione, in cui parleremo del Model.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basmatitree.net/2008/07/20/primi-passi-con-codeigniter-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Primi passi con CodeIgniter (parte 1)</title>
		<link>http://www.basmatitree.net/2008/07/20/primi-passi-con-codeigniter-1/</link>
		<comments>http://www.basmatitree.net/2008/07/20/primi-passi-con-codeigniter-1/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 08:42:40 +0000</pubDate>
		<dc:creator>Palicao</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://www.basmatitree.net/?p=14</guid>
		<description><![CDATA[Dopo aver usato per molto tempo il mio &#8220;Cesare&#8220;, ho deciso che era ora di cambiare aria, e di provare una soluzione che mi consentisse di lavorare anche in gruppo con altri sviluppatori.
Ho dato un&#8217;occhiata ai framework più usati ultimamente e ovviamente sono rimasto affascinato da CakePHP. L&#8217;uso del pattern MVC e della filosofia &#8220;convention [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo aver usato per molto tempo il mio &#8220;<a title="Cesare PHP framework" href="http://code.google.com/p/cesare/" target="_blank">Cesare</a>&#8220;, ho deciso che era ora di cambiare aria, e di provare una soluzione che mi consentisse di lavorare anche in gruppo con altri sviluppatori.</p>
<p>Ho dato un&#8217;occhiata ai framework più usati ultimamente e ovviamente sono rimasto affascinato da <a title="CakePHP" href="http://www.cakephp.org/" target="_blank">CakePHP</a>. L&#8217;uso del pattern MVC e della filosofia &#8220;convention over configuration&#8221; mi sembravano molto interessanti. Dopo averlo usato un pò, proprio a causa di quest&#8217;ultima scelta, ho deciso di cambiare strada e di provare qualcosa che promettesse di meno dal punto di vista di rapidità di sviluppo, ma che mi permettesse qualche libertà in più.</p>
<p>E così sono approdato a <a title="CodeIgniter" href="http://codeigniter.com/" target="_blank">CodeIgniter</a>, anche questo un ottimo esempio di implementazione del paradigma MVC, ma in più molto più libero da convenzioni di Cake. In più è semplicissimo da utilizzare (la curva di apprendimento di Cake è molto più ripida), è leggero (anche in termini di kB), funziona anche con PHP4.</p>
<p>Per iniziare a lavorare con CI, è sufficiente:</p>
<ol>
<li><a title="Download CodeIgniter" href="http://codeigniter.com/download.php" target="_blank">scaricarlo</a></li>
<li>estrarre i contenuti del file zippato sulla root o in una cartella del proprio server</li>
<li>modificare i file di configurazione che si trovano nella cartella system/application/config e in particolare config.php (la variabile $config['base_url']) e database.php (per la connessione al DB)</li>
</ol>
<p>A questo punto tutto è pronto per scrivere il primo controller, argomento che afferonterò nella prossima lezione!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basmatitree.net/2008/07/20/primi-passi-con-codeigniter-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP &amp; UTF-8: qualche indicazione utile</title>
		<link>http://www.basmatitree.net/2008/05/20/php-utf8-qualche-indicazione-utile/</link>
		<comments>http://www.basmatitree.net/2008/05/20/php-utf8-qualche-indicazione-utile/#comments</comments>
		<pubDate>Tue, 20 May 2008 21:08:38 +0000</pubDate>
		<dc:creator>Palicao</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[cheatsheet]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://www.basmatitree.net/?p=13</guid>
		<description><![CDATA[Una delle grandi carenze di PHP è il supporto della codifica UTF8. Questo significa che gran parte delle funzioni (in particolare quelle che agiscono su stringhe) potrebbero dare risultati inaspettati quando gli si passano come parametri stringhe multi-byte. Quindi bisogna prestare attenzione ad alcuni particolari nella realizzazione di un sito multilingua in PHP e MySQL.
In [...]]]></description>
			<content:encoded><![CDATA[<p>Una delle grandi carenze di PHP è il supporto della codifica UTF8. Questo significa che gran parte delle funzioni (in particolare quelle che agiscono su stringhe) potrebbero dare risultati inaspettati quando gli si passano come parametri stringhe multi-byte. Quindi bisogna prestare attenzione ad alcuni particolari nella realizzazione di un sito multilingua in PHP e MySQL.</p>
<p>In attesa della versione 6 di PHP che dovrebbe supportare nativamente la codifica UTF8, ecco qualche indicazione utile a tal proposito.</p>
<h3>I file e il bug del BOM</h3>
<p>Salva tutti i file che compongono l&#8217;applicazione (sia template che script PHP) in utf-8. Ho sentito parlare di un <a title="PHP BOM bug" href="http://bugs.php.net/bug.php?id=22108" target="_blank">bug</a> connesso alla presenza o meno del BOM (<a title="Byte Order Mark su Wikipedia" href="http://it.wikipedia.org/wiki/Byte_Order_Mark" target="_blank">Byte Order Mark</a>) all&#8217;inizio del file. Su Windows usando Ultra-Edit o Eclipse non ho mai sperimentato il problema, quindi se pensi che la tua applicazione dia il famoso errore &#8220;headers already sent&#8221; per questo motivo, passa ad uno di questi editor.</p>
<p>Puoi continuare a salvare i css e i javascript in formato ASCII, anche per risparmiare qualche byte, a meno che non pensi di includere delle stringhe multi-byte nel javascript.</p>
<h3>I dati</h3>
<p>Ricorda di creare i database, le tabelle e i campi in MySQL con <em>character set</em> utf8 e <em>collation </em>utf_8_general_ci. Questo può essere fatto molto facilmente se si usano strumenti come PhpMyAdmin, perchè per ognuna di queste operazioni viene data la possibilità di specificare la <em>collation</em>.</p>
<h3>La connessione</h3>
<p>Accertati che la connessione tra PHP e MySQL avvenga nel giusto formato. Pertanto, appena effettuata la connessione, esegui sempre la seguente query:</p>
<pre><em><span style="font-style: normal;">SET CHARACTER SET utf8</span>
</em></pre>
<h3>Gli headers HTTP</h3>
<p>Prima di qualsiasi output nello script, assicurati che anche la connessione HTTP avvenga in utf-8, eseguendo il seguente comando:</p>
<pre>header('Content-type: text/html; charset=utf-8');</pre>
<p>E&#8217; consigliabile, poi, ripetere l&#8217;informazione anche all&#8217;interno della pagina HTML stessa, includendo nell&#8217;<em>head </em>la riga:</p>
<pre>&lt;meta http-equiv="Content-type" value="text/html; charset=UTF-8" /&gt;</pre>
<p>Questo ovviamente nel caso più comune, ossia se l&#8217;output dello script è HTML o XHTML. Se stai producendo XML i due comandi sarebbero rispettivamente:</p>
<pre>header('Content-type: text/xml; charset=utf-8');</pre>
<p>e, all&#8217;inizio dell&#8217;XML:</p>
<pre>&lt;?xml version="1.0" encoding="utf-8" ?&gt;</pre>
<h3>Le funzioni &#8220;pericolose&#8221; di PHP</h3>
<p>Finita la fase preparatoria, puoi passare alla realizzazione dello script vero e proprio, momento in cui avrai a che fare con le numerose funzioni di PHP che potrebbero crearti grossi problemi se usate in un ambiente utf8 come quello appena creato. Puoi trovare un <a title="Handling UTF-8 with PHP" href="http://www.phpwact.org/php/i18n/utf-8" target="_blank">elenco minuzioso di tutte le possibili &#8220;trappole&#8221;</a> nell&#8217;ottima documentazione di <a title="PHP WACT" href="http://www.phpwact.org/" target="_blank">WACT</a>.</p>
<p>A questo punto dovrai scegliere una delle seguenti strategie per aggirare il problema:</p>
<ol>
<li>usare l&#8217;estensione mbstring impostando l&#8217;overloading delle funzioni &#8220;standard&#8221;</li>
<li>usare l&#8217;estensione mbstring sostituendo manualmente le funzioni &#8220;standard&#8221;</li>
<li>usare una libreria dedicata come <a title="PHP UTF-8 library" href="http://sourceforge.net/projects/phputf8" target="_blank">PHP UTF-8</a></li>
<li>usare PHP UTF-8 <strong>e</strong> mbstring</li>
</ol>
<p>Le alternative che ho elencato sono in ordine inverso di preferibilità.</p>
<p>La prima soluzione è infatti &#8220;quick and dirty&#8221; e può tornare molto utile se si intende adattare script già esistenti ad un ambiente utf-8. In pratica si tratta di installare l&#8217;estensione <a title="Multi Byte String PHP Extension" href="http://www.php.net/mbstring" target="_blank">mbstring </a>di PHP e poi dirgli di sostituire automaticamente molte delle funzioni &#8220;pericolose&#8221; con la loro alternativa multibyte. Per fare ciò basta inserire nel php.ini la seguente riga:</p>
<pre>mbstring.func_overload = 7;</pre>
<p>La soluzione può sembrare la migliore, ma potresti trovarti nei guai nel momento in cui vuoi lavorare, ad esempio, su un file binario o su un CSV salvato come ASCII.</p>
<p>Perciò potresti passare alla seconda soluzione, ossia sostituire manualmente i vari <em>strlen</em>, <em>strtoupper </em>eccetera in <em>mb_strlen</em>, <em>mb_strtoupper</em>&#8230;</p>
<p>Ma forse la soluzione migliore è quella di usare la libreria PHP UTF-8, che usa le funzioni mbstring qualora fossero presenti sul server o una versione alternativa per i server shared o in tutte quelle occasioni in cui non puoi installare estensioni.</p>
<h3>Le entities</h3>
<p>A questo punto hai affrontato quasi tutte le insidie (leggendo l&#8217;<a title="Handling UTF-8 with PHP" href="http://www.phpwact.org/php/i18n/utf-8" target="_blank">elenco di cui sopra</a> ne scopro sempre di più!) dell&#8217;utf-8 in PHP e puoi goderti un piccolo lato positivo: puoi utilizzare i caratteri accentati nell&#8217;HTML senza bisogno delle relative entities. Quindi perchè non sostituire la vecchia funzione htmlentities con la nuovo utf8_entities?</p>
<pre>function utf8_entities($str) {</pre>
<pre>	return htmlentities($str, ENT_QUOTES, 'UTF-8');</pre>
<pre>}</pre>
<h3>Ringraziamenti</h3>
<p>Molte delle informazioni contenute in questo tutorial sono prese dall&#8217;ottimo articolo <a title="PHP UTF-8 cheatsheet" href="http://www.nicknettleton.com/zine/php/php-utf-8-cheatsheet" target="_blank">PHP UTF-8 cheatsheet</a> di Nick Nettleton e dalla già citata documentazione di PHP WACT. Grazie ad entrambi per i preziosi consigli.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basmatitree.net/2008/05/20/php-utf8-qualche-indicazione-utile/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>&#8220;Cesare&#8221; PHP Framework</title>
		<link>http://www.basmatitree.net/2008/03/13/cesare-php-framework/</link>
		<comments>http://www.basmatitree.net/2008/03/13/cesare-php-framework/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 21:20:38 +0000</pubDate>
		<dc:creator>Palicao</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cesare]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://www.basmatitree.net/?p=3</guid>
		<description><![CDATA[Cesare è un framework per la creazione di siti in PHP.
Il codice è stato scritto da me e da Marco Suadoni nell&#8217;arco di più di un anno, quando eravamo colleghi presso kmstudio.
Cesare si basa sui concetti di semplicità e di modularità che a mio parere sono alla base di qualsiasi software valido.
Da qualche tempo abbiamo [...]]]></description>
			<content:encoded><![CDATA[<p>Cesare è un framework per la creazione di siti in PHP.<br />
Il codice è stato scritto da me e da Marco Suadoni nell&#8217;arco di più di un anno, quando eravamo colleghi presso <a href="http://www.kmstudio.it" target="_blank">kmstudio</a>.<br />
Cesare si basa sui concetti di semplicità e di modularità che a mio parere sono alla base di qualsiasi software valido.<br />
Da qualche tempo abbiamo rilasciato il framework su licenza GPL. È scaricabile all&#8217;indirizzo <a href="http://code.google.com/p/cesare/" target="_blank">http://code.google.com/p/cesare/</a>.<br />
Sebbene ancora in beta, e sicuramente ancora pieno di bugs, il framework è stato utilizzato con successo per la costruzione di un numero imprecisato di siti&#8230; direi più di una 40ina!<br />
Scaricate il codice, miglioratelo, criticatelo&#8230; non fate morire Cesare!</p>
<p>Su questo blog presto pubblicherò degli esempi e dei tutorial su come usarlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basmatitree.net/2008/03/13/cesare-php-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
