<?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>PHPBlog.it &#187; phpblog</title>
	<atom:link href="http://phpblog.it/category/phpblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpblog.it</link>
	<description>Solo un altro blog targato WordPress</description>
	<lastBuildDate>Mon, 31 May 2010 20:12:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Framework e template engine: mi dite la vostra?</title>
		<link>http://phpblog.it/2009/10/13/framework-e-template-engine-mi-dite-la-vostra/</link>
		<comments>http://phpblog.it/2009/10/13/framework-e-template-engine-mi-dite-la-vostra/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 09:28:24 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[framework]]></category>
		<category><![CDATA[phpblog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[template engine]]></category>

		<guid isPermaLink="false">http://phpblog.it/?p=256</guid>
		<description><![CDATA[Template: PHP si, PHP no. Pare essere il tormentone della settimana. L'approccio dei vari framework là fuori è eterogeneo, il più delle volte la decisione è lasciata allo sviluppatore che adatta lo strumento alle proprie abitudini. Che si tratti di integralismo o di convinzioni fondate la discussione è sempre aperta.]]></description>
			<content:encoded><![CDATA[<p>La scorsa settimana Fabien Potencier ha pubblicato <a title="Twig" href="http://www.twig-project.org/" target="_blank"><strong>Twig</strong></a>, un template language per PHP, che entra di fatto a far parte dei prodotti di Sensio Labs. Twig, inizialmente sviluppato da <a title="Armin Ronacher" href="http://lucumr.pocoo.org/" target="_blank">Armin Ronacher</a>, è subito piaciuto a Potencier che ci ha messo del suo per portare il progetto verso quelle che sono le sue idee riguardo a quanto un template engine dovrebbe essere.</p>
<p>Sul <a title="suo blog" href="http://fabien.potencier.org/article/34/templating-engines-in-php">suo blog</a> Potencier ha espresso un po&#8217; di idee sullo stato attuale dell&#8217;arte in termini di template engine paragonando ciò che la rete offre, ha anche pubblicato alcuni test comparativi delle performance dei vari prodotti. Risultato: poco meno di 90 commenti in nemmeno una settimana ed <a title="un post in risposta da parte di Eli White" href="http://eliw.wordpress.com/2009/10/07/in-response-to-fabien-potencier-twig-php-templating/" target="_blank">un post in risposta da parte di Eli White</a> che solleva alcuni dubbi. Il cerchio si chiude con <a title="la risposta di Potencier in un altro post" href="http://fabien.potencier.org/article/35/templating-engines-in-php-follow-up" target="_blank">la risposta di Potencier in un altro post</a>. Consiglio la lettura dei post e di tutti i commenti visto che ci sono degli spunti davvero interessanti su cui non voglio soffermarmi al momento.</p>
<p><strong>Quello di cui vorrei parlare è ad un livello un po&#8217; più alto: template engine si o no? </strong></p>
<p>Personalmente negli ultimi anni ho sviluppato applicazioni con un framework, sviluppato internamente dall&#8217;azienda per cui lavoro, basato su Smarty per la creazione dei template. Da quando ho iniziato ad usare symfony, che ricordo è un MVC, mi sono sempre chiesto se mi mancasse davvero Smarty visto che i template si realizzano direttamente in PHP.</p>
<p>La risposta non la so ancora dare, posso tuttavia esprimere dei pareri sulle due strade che si possono seguire:</p>
<p><strong>PHP</strong></p>
<ul>
<li>creare i template direttamente in PHP evita di aggiungere un ulteriore layer al tutto</li>
<li>non si deve imparare un altro linguaggio (per semplice che sia)</li>
<li>permette più libertà (con attenzione)</li>
</ul>
<p><strong>TEMPLATE ENGINE</strong></p>
<ul>
<li>rende più leggibili i template, specialmente quelli più complessi</li>
<li>rende più accessibili, in termini di manutenzione, i template anche ai non sviluppatori</li>
<li>aiuta ad essere più aderenti al design pattern MVC</li>
</ul>
<p>Quello che più è importante secondo me, che si usi PHP od un template engine, è fare in modo che nella vista (V, di MVC) ci si limiti a presentare i dati e non ad elaborarli. <strong>PHP è uno strumento potente più del necessario per &#8220;mostrare&#8221; dei dati</strong>, va usato nel modo giusto. <strong>Un template engine dal canto suo</strong>, più scarno e povero di funzioni, <strong>potrebbe aiutare in tal senso</strong> a patto che non lo si vada ad estendere con mille plugin sviluppati ad hoc per tutte le occorrenze. A quel punto tanto vale restare con PHP&#8230;</p>
<p>E voi come agite? Quali sono le vostre esperienze in merito?</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2009/10/13/framework-e-template-engine-mi-dite-la-vostra/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>1day1ticket: in agosto sono arrivato primo</title>
		<link>http://phpblog.it/2009/09/14/1day1ticket-in-agosto-sono-arrivato-primo/</link>
		<comments>http://phpblog.it/2009/09/14/1day1ticket-in-agosto-sono-arrivato-primo/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 10:12:02 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[phpblog]]></category>
		<category><![CDATA[1day1ticket]]></category>
		<category><![CDATA[agosto]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://phpblog.it/?p=229</guid>
		<description><![CDATA[E' dall'inizio del mese che tengo questo post nelle bozze in attesa dell'ufficializzazione attraverso il blog di symfony. Ebbene sono il vincitore del mese di agosto dell'iniziativa 1day1ticket! Qualcuno si ricorderà che a luglio mi sono piazzato secondo mancando di poco l'ambito premio rappresentato dal biglietto per l'evento symfony live 2010 che si terrà a Parigi il prossimo febbraio.]]></description>
			<content:encoded><![CDATA[<p>E&#8217; dall&#8217;inizio del mese che tengo questo post nelle bozze in attesa dell&#8217;<a title="blog di symfony" href="http://www.symfony-project.org/blog/2009/09/14/1day1ticket-august-winner" target="_blank">ufficializzazione attraverso il blog di symfony</a>. Ebbene <strong>sono il vincitore del mese di agosto dell&#8217;iniziativa </strong><a title="symfony 1day1ticket" href="http://trac.symfony-project.org/wiki/1day1ticket" target="_blank"><strong>1day1ticket</strong></a><strong>!</strong> Qualcuno si ricorderà che <a title="1day1ticket luglio" href="http://phpblog.it/2009/08/06/1day1ticket-sono-arrivato-secondo-in-luglio/" target="_blank">a luglio mi sono piazzato secondo</a> mancando di poco l&#8217;ambito premio rappresentato dal biglietto per l&#8217;evento <a title="symfony live 2010" href="http://www.symfony-live.com/" target="_blank"><strong>symfony live 2010</strong></a> che si terrà a Parigi il prossimo febbraio.</p>
<p>Ringrazio <a href="http://www.sensiolabs.com/">SensioLabs</a> e tutti gli sponsor che hanno reso possibile un simile evento. Invito voi tutti a partecipare visto che il concorso non è finito e che c&#8217;è sempre bisogno di aiuto per fare in modo che il core team sia un po&#8217; meno carico di lavoro a ridosso del rilascio di symfony 1.3.</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2009/09/14/1day1ticket-in-agosto-sono-arrivato-primo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>1day1ticket: in luglio sono arrivato secondo</title>
		<link>http://phpblog.it/2009/08/06/1day1ticket-sono-arrivato-secondo-in-luglio/</link>
		<comments>http://phpblog.it/2009/08/06/1day1ticket-sono-arrivato-secondo-in-luglio/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 08:10:38 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[eventi]]></category>
		<category><![CDATA[phpblog]]></category>
		<category><![CDATA[1day1ticket]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[ticket]]></category>

		<guid isPermaLink="false">http://phpblog.it/?p=225</guid>
		<description><![CDATA[Sono tra i vincitori del mese di luglio per l’iniziativa 1day1ticket di symfony. Mi sono impegnato tutto il mese per chiudere quanti più ticket possibili e dare così il mio contributo alla comunità, inoltre non nego che mi avrebbe fatto piacere aggiudicarmi un biglietto per il symfony live 2010 (cosa non riuscita visto che sono arrivato secondo sulla base di un punteggio assegnato ai singoli ticket).]]></description>
			<content:encoded><![CDATA[<p style="padding-top: 0px; padding-right: 5px; padding-bottom: 15px; padding-left: 0px; line-height: 20px; margin: 0px;"><a style="color: #0066cc; text-decoration: none;" title="winners 1day1ticket" href="http://www.symfony-project.org/blog/2009/08/04/1day1ticket-july-winners" target="_blank">Sono tra <strong>i vincitori del mese di luglio</strong></a> per l’iniziativa <strong><a style="color: #0066cc; text-decoration: none;" title="1day1ticket di symfony" href="http://trac.symfony-project.org/wiki/1day1ticket" target="_blank">1day1ticket di symfony</a></strong>. Mi sono impegnato tutto il mese per chiudere quanti più ticket possibili e dare così il mio contributo alla comunità, inoltre non nego che mi avrebbe fatto piacere aggiudicarmi un biglietto per il <a style="color: #0066cc; text-decoration: none;" title="symfony live 2010" href="http://www.symfony-live.com/" target="_blank">symfony live 2010</a> (cosa non riuscita visto che sono arrivato secondo sulla base di un punteggio assegnato ai singoli ticket).</p>
<p style="padding-top: 0px; padding-right: 5px; padding-bottom: 15px; padding-left: 0px; line-height: 20px; margin: 0px;">Tuttavia i vari sponsor hanno messo a disposizione parecchi regali, ecco cosa mi sono aggiudicato:</p>
<ul style="list-style-type: square; margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 20px; padding: 0px;">
<li style="list-style-type: square; margin-top: 10px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 20px; padding: 0px;"><a style="color: #0066cc; text-decoration: none;" href="http://www.amazon.com/Doctrine-ORM-PHP-Jonathan-Wage/dp/2918390038/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1246303098&amp;sr=8-1">Libro su Doctrine</a> (che dovevo proprio prendere visto il passaggio da Propel a Doctrine che ho deciso)<a style="color: #0066cc; text-decoration: none;" href="http://www.amazon.com/Doctrine-ORM-PHP-Jonathan-Wage/dp/2918390038/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1246303098&amp;sr=8-1"><br />
</a></li>
<li style="list-style-type: square; margin-top: 10px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 20px; padding: 0px;"><a style="color: #0066cc; text-decoration: none;" href="http://www.amazon.com/Targus-PA014U-Notebook-Light-Bonus/dp/B0001GU86Y/ref=sr_1_5?ie=UTF8&amp;s=electronics&amp;qid=1248796180&amp;sr=1-5">USB Fan + Light</a> (ficherrimo)<a style="color: #0066cc; text-decoration: none;" href="http://www.amazon.com/Targus-PA014U-Notebook-Light-Bonus/dp/B0001GU86Y/ref=sr_1_5?ie=UTF8&amp;s=electronics&amp;qid=1248796180&amp;sr=1-5"><br />
</a></li>
<li style="list-style-type: square; margin-top: 10px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 20px; padding: 0px;"><a style="color: #0066cc; text-decoration: none;" href="http://www.nexen.net/elephpant/index.php">elephpant</a> (ne ho già 2, ma uno vinto vale di più!)<a style="color: #0066cc; text-decoration: none;" href="http://www.nexen.net/elephpant/index.php"><br />
</a></li>
</ul>
<p style="padding-top: 0px; padding-right: 5px; padding-bottom: 15px; padding-left: 0px; line-height: 20px; margin: 0px;">L’iniziativa continua quindi <strong>proverò anche questo mese a chiudere un ticket al giorno</strong> augurandomi di raggiungere il mio obiettivo: essere a Parigi a febbraio! Il problema sarà rappresentato principalmente dal fatto che la connessione mobile con Fastweb non mi permette di utilizzare svn cosa quasi indispensabile per lavorare comodi tra revision e sorgenti vari…</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2009/08/06/1day1ticket-sono-arrivato-secondo-in-luglio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Symfony Reference Guide in italiano: iniziano i lavori</title>
		<link>http://phpblog.it/2009/07/20/symfony-reference-guide-in-italiano-iniziano-i-lavori-2/</link>
		<comments>http://phpblog.it/2009/07/20/symfony-reference-guide-in-italiano-iniziano-i-lavori-2/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 12:55:06 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[framework]]></category>
		<category><![CDATA[phpblog]]></category>
		<category><![CDATA[traduzioni]]></category>
		<category><![CDATA[reference guide]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[traduzione]]></category>

		<guid isPermaLink="false">http://phpblog.it/2009/07/20/symfony-reference-guide-in-italiano-iniziano-i-lavori/</guid>
		<description><![CDATA[Il team italiano che si occupa di tradurre la documentazione di symfony non si ferma mai. Il progetto attualmente in corso è la traduzione del libro Symfony Reference Guide. Il sottoscritto partecipa attivamente come sempre. Se ti vuoi unire a noi fai un salto sul gruppo italiano di symfony e batti un colpo!]]></description>
			<content:encoded><![CDATA[<p>Il team italiano che si occupa di tradurre la documentazione di symfony non si ferma mai. Il <a title="symfony reference guide in italiano" href="http://www.symfony-project.org/reference/1_2/it/">progetto attualmente in corso</a> è la <strong>traduzione del libro <a title="symfony reference guide" href="http://www.symfony-project.org/reference/1_2/en/">Symfony Reference Guide</a></strong>. Il sottoscritto partecipa attivamente come sempre. Se ti vuoi unire a noi fai un salto sul <a title="gruppo italiano di symfony" href="http://groups.google.it/group/symfony-it/">gruppo italiano di symfony</a> e batti un colpo!</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2009/07/20/symfony-reference-guide-in-italiano-iniziano-i-lavori-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jobeet tutorial: traduzione completata</title>
		<link>http://phpblog.it/2009/01/12/jobeet-tutorial-traduzione-completata/</link>
		<comments>http://phpblog.it/2009/01/12/jobeet-tutorial-traduzione-completata/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 06:00:32 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[framework]]></category>
		<category><![CDATA[phpblog]]></category>
		<category><![CDATA[advent calendar]]></category>
		<category><![CDATA[jobeet]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://phpblog.it/2009/01/12/jobeet-tutorial-traduzione-completata/</guid>
		<description><![CDATA[Comunico per chi non se ne fosse ancora accorto che la traduzione in italiano di Jobeet, il progetto per il symfony advent calendar, è stato portato a termine nei giorni scorsi. Voglio ringraziare in particolar modo chi ha aderito al mio progetto iniziale lanciato proprio sulle pagine di questo blog facendo in modo che la [...]]]></description>
			<content:encoded><![CDATA[<p>Comunico per chi non se ne fosse ancora accorto che la <strong><a href="http://www.symfony-project.org/jobeet/1_2/Propel/it/">traduzione in italiano di Jobeet</a></strong>, il progetto per il symfony advent calendar, è stato portato a termine nei giorni scorsi. Voglio ringraziare in particolar modo chi ha aderito al <a href="http://phpblog.it/2008/12/03/symfony-12-e-ladvent-calendar-del-2008/">mio progetto iniziale lanciato proprio sulle pagine di questo blog</a> facendo in modo che la comunità italiana di symfony avesse la traduzione del tutorial in tempi brevi nonostante le festività natalizie di mezzo. Facciamo i nomi:</p>
<ul>
<li>Massimiliano Arione</li>
<li>Davide Borsatto</li>
<li>Fabrizio Pucci</li>
<li>Luca Bernardi</li>
</ul>
<p>Chiedo ai lettori invece di segnalare eventuali errori di battitura in modo da correggerli quanto prima. Ma le novità non sono finite visto che a breve ve ne comunicheremo altre riguardanti il progetto. Restate sintonizzati quindi!</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2009/01/12/jobeet-tutorial-traduzione-completata/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Miit.Me: un progetto con symfony</title>
		<link>http://phpblog.it/2008/11/07/miitme-un-progetto-con-symfony/</link>
		<comments>http://phpblog.it/2008/11/07/miitme-un-progetto-con-symfony/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 06:00:05 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[framework]]></category>
		<category><![CDATA[phpblog]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[miit.me]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/11/07/miitme-un-progetto-con-symfony/</guid>
		<description><![CDATA[Oggi approfitto di questo spazio per presentare un progetto che ho realizzato nell&#8217;ultimo periodo utilizzando symfony framework per lo sviluppo dell&#8217;applicazione in PHP5. Stiamo parlando di Miit.Me una sorta di social network che punta la propria attenzione sugli eventi e sulla presenza o vicinanza di altri utenti. L&#8217;utente dovrà solo dire dove si troverà in [...]]]></description>
			<content:encoded><![CDATA[<p>Oggi approfitto di questo spazio per presentare un progetto che ho realizzato nell&#8217;ultimo periodo utilizzando <a href="http://www.symfony-project.org/" title="symfony project">symfony framework</a> per lo sviluppo dell&#8217;applicazione in PHP5. Stiamo parlando di <a href="http://miit.me"><strong>Miit.Me</strong></a> una sorta di social network che punta la propria attenzione sugli <strong>eventi e sulla presenza o vicinanza di altri utenti</strong>. L&#8217;utente dovrà solo dire dove si troverà in un dato momento per verificare se qualche altro utente iscritto al sito si trova nei paraggi o addirittura nello stesso posto.</p>
<p><span id="more-191"></span></p>
<p><a href="http://phpblog.it/2008/11/07/miitme-un-progetto-con-symfony/miitme-un-progetto-con-symfony/" rel="attachment wp-att-193" title="Miit.Me: un progetto con symfony"><img src="http://172.18.0.13/wordpress/wp-content/uploads/2008/11/miitme1.jpg" alt="Miit.Me: un progetto con symfony" /></a></p>
<p>Attualmente il sistema è in beta privata per aver modo di testare in modo approfondito tutte le funzionalità pubblicate da lunedì 3 novembre. Per provare la beta è necessario essere invitati da un utente già registrato, quindi <strong>se qualcuno di voi fosse interessato può semplicemente chiedere qui nei commenti di essere invitato</strong> provvederò personalmente a fargli pervenire un invito.</p>
<p>Inoltre a chi deciderà di partecipare chiedo di non farsi problemi a contattarmi per eventuali problemi, suggerimenti, consigli. I feedback durante il periodo di beta testing sono fondamentali per lo sviluppo nella giusta direzione di un&#8217;applicazione web.</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/11/07/miitme-un-progetto-con-symfony/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Propel: AND e OR</title>
		<link>http://phpblog.it/2008/11/05/propel-and-e-or/</link>
		<comments>http://phpblog.it/2008/11/05/propel-and-e-or/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 05:00:32 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[phpblog]]></category>
		<category><![CDATA[and]]></category>
		<category><![CDATA[or]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/11/05/propel-and-e-or/</guid>
		<description><![CDATA[Le condizioni multiple per una colonna utilizzando Propel come ORM non sono proprio immediate. Lavorando con symfony, che usa proprio Propel, mi sono avvicinato all&#8217;orm grazie al libro relativo al framework di sviluppo per PHP5. Chiaramente le nozioni riportate sono relative agli esempi presi in esame di volta in volta e coprono le funzioni principali [...]]]></description>
			<content:encoded><![CDATA[<p>Le <strong>condizioni multiple per una colonna</strong> utilizzando <a href="http://propel.phpdb.org/trac/" title="Propel"><strong>Propel come ORM</strong></a> non sono proprio immediate. Lavorando con symfony, che usa proprio Propel, mi sono avvicinato all&#8217;orm grazie al <a href="http://www.symfony-project.org/book/1_1/08-Inside-the-Model-Layer" title="symfony model layer">libro relativo al framework</a> di sviluppo per PHP5. Chiaramente le nozioni riportate sono relative agli esempi presi in esame di volta in volta e coprono le funzioni principali senza, giustamente, andare troppo nei particolari (da ricercare nella documentazione di Propel). Questo ha fatto sì che mi imbattessi nel problema di applicare condizioni multiple in una query per una stessa colonna.</p>
<p><span id="more-190"></span> Usiamo un semplice esempio per mostrare la strada sbagliata, che potrebbe sembrare la più logica non conoscendo Propel, e quella giusta. Ipotizziamo di avere una semplice tabella con due soli campi: &#8220;nome&#8221; e &#8220;numero&#8221;. Da questa tabella vogliamo estrarre solo i record che hanno un valore di &#8220;numero&#8221; compreso tra 11 e 20 (con estremi esclusi).</p>
<p><code>SELECT *<br />
FROM table<br />
WHERE numero &gt; 11 AND numero &lt; 20</code></p>
<p>La <strong>traduzione errata,</strong> più istintiva, è qualcosa di simile alla seguente:</p>
<p><code>$c = new Criteria();<br />
$c-&gt;add(TablePeer::NUMERO, 11, Criteria::GREATER_THAN);<br />
$c-&gt;add(TablePeer::NUMERO, 20, Criteria::LESS_THAN);<br />
...</code></p>
<p>dove si pensa che ogni <em>add</em> vada ad aggiungere una condizione conbinandola alle altre con un AND. <strong>Tutto questo però è sbagliato visto che aggiungendo in questo modo più condizioni sulla stessa colonna &#8220;sovrascrive&#8221; le precedenti e lascia utilizzata solo l&#8217;ultima.</strong> L&#8217; equivalente di:</p>
<p><code>SELECT *<br />
FROM table<br />
WHERE numero &lt; 20</code></p>
<p>che di sicuro non è quello che vogliamo. <strong>Come fare allora? </strong>Bisogna ricorrere all&#8217;utilizzo degli <a href="http://propel.phpdb.org/docs/user_guide/chapters/FindingObjects.html" title="Criterion objects">oggetti di tipo Criterion</a> usando il metodo Criterion::addAnd():</p>
<p><code>$c = new Criteria();<br />
$criterion = $c-&gt;getNewCriterion(TablePeer::NUMERO, 11, Criteria::GREATER_THAN);<br />
$criterion-&gt;addAnd($c-&gt;getNewCriterion(TablePeer::NUMERO, 20, Criteria::LESS_THAN));<br />
$c-&gt;add($criterion);<br />
...</code></p>
<p>In questo modo le due condizioni verranno prese in considerazione allo stesso modo e collegate con un AND. <strong>Abbiamo ottenuto l&#8217;interpretazione corretta.</strong> Per lavorare con l&#8217;OR basta cambiare il metodo utilizzato da <code>$criterion-&gt;addAnd</code> a <code>$criterion-&gt;addOr.</code></p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/11/05/propel-and-e-or/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPWomen ha compiuto 2 anni</title>
		<link>http://phpblog.it/2008/11/03/phpwomen-ha-compiuto-2-anni/</link>
		<comments>http://phpblog.it/2008/11/03/phpwomen-ha-compiuto-2-anni/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 05:00:46 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[phpblog]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[phpday]]></category>
		<category><![CDATA[phpwomen]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/11/03/phpwomen-ha-compiuto-2-anni/</guid>
		<description><![CDATA[Il 24 ottobre PHPWomen ha pubblicato un post per festeggiare i 2 anni di vita del movimento che a breve dovrebbe diventare ufficialmente una vera e propria organizzazione no profit. PHPWomen è uno specifico user group dedicato al PHP ed alle donne (senza esclusione degli uomini) che si propone per la realizzazione di un network [...]]]></description>
			<content:encoded><![CDATA[<p>Il 24 ottobre <a href="http://www.phpwomen.org/wordpress/2008/10/24/happy-birthday-phpwomen/" title="PHPWomen ha pubblicato un post"><strong>PHPWomen</strong> ha pubblicato un post</a> per festeggiare i 2 anni di vita del movimento che a breve dovrebbe diventare ufficialmente una vera e propria organizzazione no profit. PHPWomen è uno specifico user group dedicato al PHP ed alle donne (senza esclusione degli uomini) che si propone per la realizzazione di un network di supporto tutoraggio al fine di coinvolgere &#8220;il gentil sesso&#8221; nel mondo del PHP.</p>
<p>Effettivamente le ragioni espresse nell&#8217;<a href="http://www.phpwomen.org/wordpress/about/" title="about del sito ufficiale">about del sito ufficiale</a> sono reali: le donne coinvolte nello sviluppo del sotware sono poche, quelle che sviluppanno in PHP solo una piccola frazione. Il sito vuole essere un punto di riferimento per tutte le donne che spesso si trovano da sole (nel senso uniche donne) a conferenze, seminari e incontri vari. C&#8217;è da dire che è tutto vero: al PHPDay 2008 non ho ricordi di donne presenti perchè sviluppatrici (e non al seguito del fidanzato/marito).</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/11/03/phpwomen-ha-compiuto-2-anni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Password: questione di sicurezza</title>
		<link>http://phpblog.it/2008/10/17/password-questione-di-sicurezza/</link>
		<comments>http://phpblog.it/2008/10/17/password-questione-di-sicurezza/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 05:00:55 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[phpblog]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[accesso dati]]></category>
		<category><![CDATA[password]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/10/17/password-questione-di-sicurezza/</guid>
		<description><![CDATA[La password è forse il sistema di sicurezza più utlizzato sul web per la difesa dei dati degli utenti. Ad ogni profilo, utente, cliente corrispondono uno username ed una password per limitare l&#8217;accesso ai dati ed alle funzionalità ad esso associati. Tuttavia può spesso capitare che la sicurezza fornita dall&#8217;accoppiata username/password non sia all&#8217;altezza auspicata [...]]]></description>
			<content:encoded><![CDATA[<p>La password è forse il sistema di sicurezza più utlizzato sul web per la difesa dei dati degli utenti. Ad ogni profilo, utente, cliente corrispondono uno username ed una password per limitare l&#8217;accesso ai dati ed alle funzionalità ad esso associati. Tuttavia può spesso capitare che la sicurezza fornita dall&#8217;accoppiata username/password non sia all&#8217;altezza auspicata dagli sviluppatori mettendo a rischio i dati e l&#8217;applicazione stessa. Come? Molto semplice: pippo/pippo o nome/cognome vi dicono niente? L&#8217;utente per pigrizia utilizzerà una password reciclata, magari semplice e corta cosa che implica un basso grado di sicurezza: l&#8217;alfanumerico di almeno 6 caratteri sarà un miraggio.</p>
<p>Per questo motivo in un progetto che sto affrontando in questo periodo ho deciso che <strong>l&#8217;utente non potrà agire direttamente sulla password ma sarà sempre il sistema ad occuparsene</strong>. Al momento della registrazione verrà creata una password comunicata all&#8217;utente via mail (caratteri alfanumerici); in caso di smarrimento l&#8217;utente potrà richiedere una nuova password con relativo reset della precedente dovuto al fatto che la password non verrà memorizzata in chiaro sul database.</p>
<p>L&#8217;approccio non è certo rivoluzionario, tuttavia in molte applicazioni la gestione password è diversa e lascia più libertà all&#8217;utente andando a dare spazio quindi ai problemi visti in precedenza.</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/10/17/password-questione-di-sicurezza/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come criptare i nostri scripts in PHP &#8211; Zend Guard</title>
		<link>http://phpblog.it/2008/10/15/criptare-i-nostri-scripts-in-php-zend-guard/</link>
		<comments>http://phpblog.it/2008/10/15/criptare-i-nostri-scripts-in-php-zend-guard/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 05:00:13 +0000</pubDate>
		<dc:creator>Davide Martignetti</dc:creator>
				<category><![CDATA[phpblog]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[cifrare]]></category>
		<category><![CDATA[criptare]]></category>
		<category><![CDATA[decode]]></category>
		<category><![CDATA[encode]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend guard]]></category>
		<category><![CDATA[zend optimizer]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/10/15/criptare-i-nostri-scripts-in-php-zend-guard/</guid>
		<description><![CDATA[Questo articolo è un approfondimento di “Offuscare o proteggere il nostro codice PHP &#8211; Introduzione“, analizzeremo le funzionalità, i pregi ed i difetti di Zend Guard al fine di criptare uno script PHP. Zend Guard non è l&#8217;unico programma che permette di cifrare uno script in PHP, per la lista completa vi rimando a Offuscare [...]]]></description>
			<content:encoded><![CDATA[<p>Questo articolo è un approfondimento di “<a href="http://phpblog.it/2008/07/21/offuscare-o-proteggere-il-nostro-codice-php-introduzione/" title="Offuscare o proteggere il nostro codice PHP - Introduzione">Offuscare o proteggere il nostro codice PHP &#8211; Introduzione</a>“, analizzeremo le funzionalità, i pregi ed i difetti di Zend Guard al fine di criptare uno script PHP.<br />
Zend Guard non è l&#8217;unico programma che permette di cifrare uno script in PHP, per la lista completa vi rimando a <a href="http://phpblog.it/2008/07/21/offuscare-o-proteggere-il-nostro-codice-php-introduzione/" title="Offuscare o proteggere il nostro codice PHP - Introduzione">Offuscare o proteggere il nostro codice PHP &#8211; Introduzione</a>.</p>
<p><span id="more-155"></span></p>
<h3>Zend Guard</h3>
<p>Zend Guard è senz&#8217;altro il più usato strumento a pagamento ( 600$ ) che permette di criptare i files PHP, forse perchè si integra perfettamente nell&#8217;interfaccia di Zend Studio, usandolo potrete anche creare delle licenze per i vostri prodotti, l&#8217;interfaccia è semplice ed intuitiva così come la sua installazione. Per usare Zend Guard è però necessario avere installato sul nostro webserver Zend Optimizer (Zend Optimizer è gratuito).<br />
Seppur il più usato Zend Guard non è di certo lo strumento più sicuro al quale affidare i nostri script. Esistono vari servizi gratuiti e a pagamento offerti dalla comunità online, di questi, però, troviamo online solamente quelli a pagamento: primo fra tutti <a href="http://www.zendecode.com/">Zend Decode</a> ( 50$ &#8211; per PHP4 e PHP5, solo per Windows ).<br />
Per provare Zend Guard scaricate ed installate Zend Guard [<br />
<a href="http://www.zend.com/en/products/guard/downloads">Scarica</a> ] ed anche Zend Optimizer [ <a href="http://www.zend.com/en/products/guard/downloads">Scarica</a> - Quando lo si installa fare molta attenzione a non premere invio senza curarsi di ciò che ci viene chiesto perchè è molto importante configurarlo correttamente! ].</p>
<p>Ecco come si presenta un semplicissimo script prima e dopo essere stato criptato ( ho usato la versione demo ):</p>
<h3>Prima</h3>
<p>[source:Php]&lt;?php<br />
function isOnline($address=&#8221;localhost&#8221;, $port=&#8221;80&#8243;, $timeout=&#8221;1&#8243;)<br />
{<br />
@$fp=fsockopen($address,$port,$err_no,$errstr,$timeout);<br />
if($fp)<br />
{<br />
return 1;<br />
fclose($fp);<br />
}<br />
else<br />
{<br />
echo &#8220;Errore numero $err_no: $errstr\n&#8221;;<br />
return 0;<br />
}<br />
}<br />
?&gt;[/source]</p>
<h3>Dopo</h3>
<p>[source:Php]&lt;?php @Zend;<br />
4123;<br />
/* ñ!This is not a text file!Þí */<br />
print &lt;&lt;&lt;EOM<br />
&lt;html&gt;&lt;body&gt;&lt;a href=&#8221;http://www.zend.com/products/zend_guard&#8221;&gt;&lt;img border=&#8221;0&#8243; src=&#8221;http://www.zend.com/images/store/safeguard_optimizer_img.gif&#8221; align=&#8221;right&#8221;&gt;&lt;/a&gt;&lt;center&gt;&lt;h1&gt;Zend Optimizer not installed&lt;/h1&gt;&lt;/center&gt;&lt;p&gt;This file was encoded by the &lt;a href=&#8221;http://www.zend.com/products/zend_guard&#8221;&gt;Zend Guard&lt;/a&gt;. In order to run it, please install the &lt;a href=&#8221;http://www.zend.com/products/zend_optimizer&#8221;&gt;Zend Optimizer&lt;/a&gt; (available without charge), version 3.0.0 or later. &lt;/p&gt;&lt;h2&gt;Seeing this message instead of the website you expected?&lt;/h2&gt;This means that this webserver is not configured correctly. In order to view this website properly, please contact the website&#8217;s system administrator/webmaster with the following message:&lt;tt&gt;The component &#8220;Zend Optimizer&#8221; is not installed on the Web Server and therefore cannot service encoded files. Please download and install the Zend Optimizer (available without charge) on the Web Server.&lt;/tt&gt;&lt;b&gt;Note&lt;/b&gt;: Zend Technologies cannot resolve issues related to this message appearing on websites not belonging to &lt;a href=&#8221;http://www.zend.com&#8221;&gt;Zend Technologies&lt;/a&gt;. &lt;h2&gt;What is the Zend Optimizer?&lt;/h2&gt;&lt;p&gt;The Zend Optimizer is one of the most popular PHP plugins for performance-improvement, and has been available without charge, since the early days of PHP 4. It improves performance by scanning PHP&#8217;s intermediate code and passing it through multiple Optimization Passes to replace inefficient code patterns with more efficient code blocks. The replaced code blocks perform exactly the same operations as the original code, only faster. &lt;/p&gt;&lt;p&gt;In addition to improving performance, the Zend Optimizer also enables PHP to transparently load files encoded by the Zend Guard. &lt;/p&gt;&lt;p&gt;The Zend Optimizer is a free product available for download from &lt;a href=&#8221;http://www.zend.com&#8221;&gt;Zend Technologies&lt;/a&gt;. Zend Technologies also developed the PHP scripting engine, known as the &lt;a href=&#8221;http://www.zend.com/products/zend_engine&#8221;&gt;Zend Engine&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;<br />
EOM;<br />
exit();<br />
__halt_compiler();<br />
?&gt;<br />
200407220335061262xù<br />
Ÿ2}W½N#1ö!t‚,Ez„Ñƒvìõ=5=Wœ¢Ä›5ò&amp;Å=Â½/Á# ^€Ž’††‚&#8217;@ºæüŸÍÖÍ|ãÙùÆóc»æ©šéè¼qƒÆØa:×Z`_ÊJÉ¬f%a˜2iŠ¿LW‹ÅŸÓñtjœq‰f­ž\ëÕ@)¥ Bº[ïlRëVœ#’k„ûT‹þ×’w™{/‘ÒøzÜÚWÃS~ú$š·º©çŠ©.¬àÂœ<br />
ñïè¨¶õ.ìBISÈ´Y†# ö8ZÎJ¯ºB_­n…ð¯aüq¦òù~o©õd\_év‡åÑ0„&lt;éâ¬‹‘Hõ}žwI‰d%@u^w¾<br />
uêoÊé¸-³ÝžFµ‹ÜIÀ5Ö‡m~Žð0Ã¸?d˜D˜táÃW®¶Ã8Â´ßïvî»rMÏ¿#_zô0šÝl2;ö/ÈÌ¼5‘ÐbëààmvŒÇRº91Cÿ¾Ë[èŒÿÓ¢BçÆh£FÍj¡Œm$2Fw(öÓ£ãMkvõ<br />
¼uâüÙÀSÏ€}Úö4{„z&amp;HÞ°­É…ÈÐ:çö Â5ƒP^Ì¡”Øö˜Ny<br />
(ã¸â üneÌïF )'„b^Ea»4N(JV²Š#ò¤’Àyjîÿrý—Ä<br />
[/source]</p>
<p><img src="http://172.18.0.13/wordpress/wp-content/uploads/2008/10/encode.png" alt="Come criptare i nostri scripts in PHP - Zend Guard" /></p>
<p>Se volete provare il programma dovete creare un nuovo progetto seguendo le istruzioni, una volta creato vi comparirà una schermata, sulla destra della sezione centrale cliccate sull&#8217;opzione &#8220;Encode project&#8221;, vi troverete il file criptato nella path specificata alla voce &#8220;Output Location&#8221;.</p>
<p><strong>Conclusioni:</strong> Il programma è caro, richiede zend optimizer installato sul webserver e la protezione è facilmente aggirabile, a mio parere esistono alternative più valide e più economiche  .</p>
]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/10/15/criptare-i-nostri-scripts-in-php-zend-guard/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
