<?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>Programmazione Web &#187; Sviluppo applicazioni</title>
	<atom:link href="http://www.programmazione-web.com/categorie/sviluppo-applicazioni/feed" rel="self" type="application/rss+xml" />
	<link>http://www.programmazione-web.com</link>
	<description>il Blog open degli sviluppatori del web!</description>
	<lastBuildDate>Tue, 10 Nov 2009 21:04:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Commentare il codice sorgente, è inutile?</title>
		<link>http://www.programmazione-web.com/commentare-il-codice-e-inutile.php</link>
		<comments>http://www.programmazione-web.com/commentare-il-codice-e-inutile.php#comments</comments>
		<pubDate>Thu, 24 Sep 2009 11:37:09 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Applicazioni]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[News dal web]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[codice sorgente]]></category>
		<category><![CDATA[commenti codice]]></category>
		<category><![CDATA[sviluppo software]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/?p=260</guid>
		<description><![CDATA[Nella stesura del codice sorgente delle applicazioni è utile o inutile abbondare di commenti? Diversi sono i punti vista, ma sicuramente l'aspetto archietetturale del software e la semantica del codice scritto possono aiutare a comprendere la logica del codice.]]></description>
			<content:encoded><![CDATA[<p>Sul sito phpnews.it ho letto questo <a href="http://www.phpnews.it/blog/2009/05/02/quanto-e-utile-commentare-il-codice/comment-page-1/#comment-2318" target="_blank">post</a> che cita altri siti/blog internazionali sull&#8217;argomento dell&#8217;utilità o meno di commentare il <strong>codice sorgente delle applicazioni</strong>. Il mio punto di vista in merito è che la cosa fondamentale quanto di <strong>scrive del codice</strong> è rendere semantica ogni istruzione, che tradotto significa dare nomi più sensati alle alle classi/metodi/proprietà e variabili che si utilizzano. Questa pratica permette di dare più senso ad ogni riga di codice e rende già tutto molto più chiaro a chi lo deve interpretare.</p>
<p>I commenti comunque possono essere utili e in certi rari casi sono fondamentali, soprattutto in <strong>procedure complesse e ricche di casistiche</strong>.. ma se si abusa si hanno sostanzialmente due svantaggi: 1) si perde tempo 2) non serve a niente o quasi a nulla.</p>
<p>Inutile quindi fare commenti su parti di codice poco complessi che sono già autoesplicativi, porzioni di codice che <strong>qualsiasi programmatore junior è in grado di leggere</strong>. Piuttosto fare molta attenzione  alla strutturazione del codice, che come già da tempo ci insegnano i grandi sviluppatori e web architects moderni, per il web tende sempre all&#8217;<strong>architettura in stile MVC</strong>, che è quella che si avvicina di più alla <strong>logica di internet</strong>…  questo semplica notevolmente la stesura, la manutenzione e la comprensione del codice scritto, oltre a rendere i moduli che compongono l&#8217;applicazione indipendenti e incapsulati.</p>
<p>Per le applicazioni software tradizionali invece apprezzo molto l&#8217;approcio code behind, business logic e data access layer</p>
<p>Quindi non abusare mai di commenti, usare nomi sensati e fate attenzione piuttosto all&#8217;<strong>architettura del software</strong>.. chiaramente <strong>object oriented</strong>!</p>
<p>In attesa di un vostro parere in merito&#8230; <img src='http://www.programmazione-web.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/commentare-il-codice-e-inutile.php/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Disponibile IDE NetBeans 6.7, anche per php</title>
		<link>http://www.programmazione-web.com/rilasciato-ide-netbeans-67-per-php.php</link>
		<comments>http://www.programmazione-web.com/rilasciato-ide-netbeans-67-per-php.php#comments</comments>
		<pubDate>Wed, 01 Jul 2009 16:24:27 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Applicazioni]]></category>
		<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Editor]]></category>
		<category><![CDATA[News dal web]]></category>
		<category><![CDATA[Programmare Php]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[editor php]]></category>
		<category><![CDATA[ide sviluppo]]></category>
		<category><![CDATA[linguaggio php]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/?p=220</guid>
		<description><![CDATA[Dal 29 Giugno è stata rilasciata e resa disponibile per il download la piattaforma IDE NetBeans 6.7, offre una piattaforma di sviluppo per le seguenti tecnologie Java, PHP, Ruby, JavaScript, Groovy and C/C++, e altri.]]></description>
			<content:encoded><![CDATA[<p><strong>Disponibile IDE NetBeans 6.7, anche per php</strong></p>
<p>Dal 29 Giugno è stata rilasciata e resa disponibile per il download la piattaforma IDE NetBeans 6.7, tante sono le novità di questa release.</p>
<p>Ecco a voi alcune anticipazioni:</p>
<ul>
<li> integrazione della piattaforma Kenai</li>
<li>supporto nativo di Maven</li>
<li>supporto migliorato di GlassFish v3, che rappresenta una anteprima della prossima piattaforma JavaEE 6</li>
<li>features on demand, ovvero l’attivazione di alcuni componenti dell’IDE solo quando necessari</li>
</ul>
<p>Ricordando che NetBeans IDE 6.7, costruito dal successo della precendente release 6.5.x, offre una piattaforma di sviluppo per le seguenti tecnologie Java, <strong>PHP</strong>, Ruby, JavaScript, Groovy and C/C++, e  altri.</p>
<p><strong>NetBeans IDE 6.7</strong> è disponibile in Inglese, Portoghese Brasigliano, Giapponese e Cinese semplificato. Ci sono comunque tante comunity che rendono disponibili i pacchetti di traduzione in altre lingue.</p>
<p>Per avere maggiori informazioni su NetBeans IDE 6.7:</p>
<ul>
<li><a href="http://www.netbeans.org/features/index.html" target="_blank">NetBeans IDE 6.7 Features</a></li>
<li><a href="http://www.netbeans.org/kb/index.html" target="_blank">NetBeans IDE 6.7 Tutorials and Documentation</a></li>
<li><a href="http://www.netbeans.org/kb/docs/intro-screencasts.html" target="_blank">Videos of NetBeans IDE 6.7 in Action</a></li>
</ul>
<p>NetBeans è attualmente il mio IDE preferito per lo sviluppo in PHP! Per il download consultate il sito di netbeans.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/rilasciato-ide-netbeans-67-per-php.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rilasciata la nuova versione di PHP 5.3.0</title>
		<link>http://www.programmazione-web.com/rilasciato-php-530.php</link>
		<comments>http://www.programmazione-web.com/rilasciato-php-530.php#comments</comments>
		<pubDate>Wed, 01 Jul 2009 15:00:39 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Applicazioni]]></category>
		<category><![CDATA[News dal web]]></category>
		<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Programmare Php]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[linguaggi web]]></category>
		<category><![CDATA[linguaggio php]]></category>
		<category><![CDATA[namespace php]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[php 5.3.0]]></category>
		<category><![CDATA[static binding php]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/?p=216</guid>
		<description><![CDATA[Il team sviluppo ha annunciato ieri la notizia ufficiale del rilascio dell'ultima versione di PHP della serie 5.x che incude innumerevoli nuove feature e la risuluzione di molti bug del linguaggio, oltre 140 bug fixes.]]></description>
			<content:encoded><![CDATA[<p><strong>Rilasciata la nuova versione di PHP 5.3.0</strong></p>
<p>Il team sviluppo ha annunciato ieri la notizia ufficiale del rilascio dell&#8217;ultima versione di PHP della serie 5.x che incude innumerevoli nuove feature e la risuluzione di molti bug del linguaggio, oltre 140 bug fixes.</p>
<p>Le principali novità introdotte in PHP 5.3.0 sono citate qui di seguito:</p>
<ul>
<li> Supporto per i namespaces;</li>
<li>Funzioni Lambda e Closures;</li>
<li>Miglioramento delle performance;</li>
<li>Garbage collection rivisitato;</li>
<li>Sostituizione di libmysql con mysqlnd;</li>
<li>Miglioramento del porting per le piattaforme alternative;</li>
<li>Cambio politica della gestione degli avvisi (E_DEPRECATED, E_STRICT);</li>
<li>Introdotte nuove direttive nel php.ini che rendono più flessibile la configurazione;</li>
<li>Nuove estensioni native.</li>
</ul>
<p>Vi rimando al <a title="Php 5.3.0 released" href="http://www.php.net/archive/2009.php#id2009-06-30-1" target="_blank">link ufficiale </a>e per ulteriori approfondimenti potete consultare alcuni articoli di html.it che descrivono  con alcuni esempi le nuove funzionalità:</p>
<p><a title="Namespace php 5.3.0" href="http://php.html.it/articoli/leggi/2475/le-novita-di-php-53-namespace/" target="_blank">http://php.html.it/articoli/leggi/2475/le-novita-di-php-53-namespace/</a><br />
<a title="stati binding php 5.3.0" href="http://php.html.it/articoli/leggi/2500/le-novita-di-php-53-supporto-alla-metaprogrammazione/" target="_blank">http://php.html.it/articoli/leggi/2500/le-novita-di-php-53-supporto-alla-metaprogrammazione/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/rilasciato-php-530.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Realizzare moduli per Prestashop Ecommerce</title>
		<link>http://www.programmazione-web.com/realizzare-moduli-per-prestashop-ecommerce.php</link>
		<comments>http://www.programmazione-web.com/realizzare-moduli-per-prestashop-ecommerce.php#comments</comments>
		<pubDate>Sun, 26 Apr 2009 13:25:31 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Ecommerce]]></category>
		<category><![CDATA[Prestashop]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[ecommerce opensource]]></category>
		<category><![CDATA[magento ecommerce]]></category>
		<category><![CDATA[moduli prestashop]]></category>
		<category><![CDATA[piattaforme ecommerce]]></category>
		<category><![CDATA[prestashop ecommerce]]></category>
		<category><![CDATA[sviluppo moduli prestashop]]></category>
		<category><![CDATA[zen cart]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/?p=199</guid>
		<description><![CDATA[Prestashop è una piattaforma opensource per realizzare siti ecommerce. Questo post vuole illustrare come sia semplice sviluppare per Prestashop la base di un modulo personalizzato che si potrà installare.]]></description>
			<content:encoded><![CDATA[<p><strong>Sviluppare un modulo per la piattaforma Prestashop Ecommerce</strong></p>
<p>Per chi non lo sapesse <a title="Prestashop ecommerce" href="http://www.prestashop.com" target="_blank"><strong>Prestashop</strong></a> è una <strong>piattaforma opensource</strong> per realizzare <strong>siti ecommerce</strong>. Questo prodotto abbastanza giovane, ha da poco superato la realease 1.0 e stà avendo parecchi consensi positivi nell&#8217;ambito delle soluzioni moderne per il <strong>commercio elettronico</strong>, tanto da essere preferibile in molti casi a <strong>Magento Ecommerce</strong>, quest&#8217;ultimo giudicato l&#8217;alternativa sostitutiva a <strong>osCommerce </strong>e <strong>Zen-cart</strong>.</p>
<p>I punti di forza di <strong>Prestashop </strong>sono la <strong>ricchezza di funzionalità</strong> pur garantendo un <strong>ottima facilità di utilizzo</strong> sia per chi gestisce il proprio negozio online sia per chi deve svilupparlo, oltre ad essere veloce, leggero, e <strong>facilmente integrabile</strong>, il tutto grazie ad un <strong>codice di ottima fattura, moderno e ben organizzato</strong>.</p>
<p>Questo post non vuole essere però una introduzione a <strong>Prestashop</strong>, che in questi ultimi mesi è stato discusso ampliamente e recensito in molti altri siti, ma si vuole illustrare come sia semplice realizzare la base di un modulo personalizzato che si potrà installare sulla piattaforma in questione.</p>
<p><strong>La procedura per la creazione di un modulo è molto semplice:</strong></p>
<p>I moduli stanno tutti dentro alla cartella /modules, alcuni per velocizzare la creazione di un nuovo modulo copiano direttamente una cartella di un altro modulo poi iniziano a personalizzarlo per crearsi il proprio.. ma in questo esempio vediamo come <strong>crearlo from scratch</strong>.</p>
<ol>
<li>Creazione della cartella <strong>mymodule/</strong> dentro a <strong>/modules</strong></li>
<li>Creazione del file vista <strong>mymodule.tpl</strong> dentro a <strong>/modules/mymodule/</strong></li>
<li>Creazione della classe <strong>mymodule.php</strong> sempre dentro a <strong>/modules/mymodule/</strong></li>
</ol>
<p><strong>Classe mymodule.php</strong></p>
<p>In questo esempio di codice sottostante si vuole mostrare come realizzare una semplice classe <strong>Mymodule</strong>, che estende la classe padre module di <strong>prestashop, </strong>ereditandone le caratteristiche fondamentali.<strong> </strong>Tramite il costrutture vengono inizializzate le variabili necessarie, e attraverso il metodo install si puo&#8217; registrare il modulo nel <strong>Hook di default</strong>, in questo caso il Left, visualizzando il contenuto della vista tramite la chiamata a <strong>hookLeftColumn</strong>.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Mymodule <span class="kw2">extends</span> Module</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">function</span> __construct<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">name</span> = <span class="st0">&#8216;mymodule&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">tab</span> = <span class="st0">&#8216;Blocks&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">version</span> = <span class="nu0">0</span>.l;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parent::__construct<span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">// The parent construct is required for translations</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">page</span> = <a href="http://www.php.net/basename"><span class="kw3">basename</span></a><span class="br0">&#40;</span><span class="kw2">__FILE__</span>, <span class="st0">&#8216;.php&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">displayName</span> = <span class="re0">$this</span>-&gt;<span class="me1">l</span><span class="br0">&#40;</span><span class="st0">&#8216;Block mymodule&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">description</span> = <span class="re0">$this</span>-&gt;<span class="me1">l</span><span class="br0">&#40;</span><span class="st0">&#8216;Add a mymodule block&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">function</span> install<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!parent::<span class="me2">install</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!<span class="re0">$this</span>-&gt;<span class="me1">registerHook</span><span class="br0">&#40;</span><span class="st0">&#8216;leftColumn&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * Returns module content</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; *</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @param array $params Parameters</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @return string Content</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">function</span> hookLeftColumn<span class="br0">&#40;</span><span class="re0">$params</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.php.net/global"><span class="kw3">global</span></a> <span class="re0">$smarty</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$myvariable</span> = <span class="st0">&#8216;this is my var&#8217;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$smarty</span>-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><span class="st0">&#8216;myvariable&#8217;</span>, <span class="re0">$myvariable</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">return</span> <span class="re0">$this</span>-&gt;<span class="me1">display</span><span class="br0">&#40;</span><span class="kw2">__FILE__</span>, <span class="st0">&#8216;mymodule.tpl&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Come si può notare all&#8217;interno del metodo <strong>hookLeftColumn </strong>posso passare le variabili elaborate nella classe alle viste per poi visualizzarle. All&#8217;interno del modulo posso fare riferimento chiaramente a tutte le classi disponibili del framework di prestashop.. As esempio potrei fare una semplice query su una tabella del database:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">function</span> hookLeftColumn<span class="br0">&#40;</span><span class="re0">$params</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.php.net/global"><span class="kw3">global</span></a> <span class="re0">$smarty</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$myquery</span> = Db::<span class="me2">getInstance</span><span class="br0">&#40;</span><span class="br0">&#41;</span>-&gt;<span class="me1">Execute</span><span class="br0">&#40;</span><span class="st0">&#8216;SELECT * FROM mytable&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$smarty</span>-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><span class="st0">&#8216;myresult&#8217;</span>, <span class="re0">$myquery</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">return</span> <span class="re0">$this</span>-&gt;<span class="me1">display</span><span class="br0">&#40;</span><span class="kw2">__FILE__</span>, <span class="st0">&#8216;mymodule.tpl&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>semplice vero?</p>
<p><strong>Creare la vista mymodule.tpl</strong><br />
Un semplice esempio di vista che verrà richiamata dalla precedente classe e sarà visualizzata nel parte left del nostro eshop.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;div <span class="kw2">class</span>=<span class="st0">&quot;mymoduleblock&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;h4&gt;<span class="br0">&#123;</span>l s=<span class="st0">&#8216;My first module&#8217;</span> mod=<span class="st0">&#8216;mymodule&#8217;</span><span class="br0">&#125;</span>&lt;/h4&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;div <span class="kw2">class</span>=<span class="st0">&quot;block_content&quot;</span> style=<span class="st0">&quot;padding:0px;&quot;</span>&gt;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; My First Prestashop module, <span class="br0">&#123;</span>myvariable<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;a href=<span class="st0">&quot;http://www.neryo.com/&quot;</span>&gt;Neryo consulenza software&lt;/a&gt;&lt;/div&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/div&gt;</div>
</li>
</ol>
</div>
<p>Come si può notare <strong>Prestashop utilizza smarty </strong>come motore di template, quindi abbiamo a disposizione tutte le sue funzionalità per fare cicli e manipolazioni.. e inoltre attraverso il quale si possono definire alcuni stringhe di codice, es <strong>{l s=&#8217;My first module&#8217; mod=&#8217;mymodule&#8217;} </strong>all interno delle viste, che poi potranno essere tradotti dal sistema di traduzione presente nella piattaforma, generando vari files all&#8217;intenro della cartella del modulo (es. it.php, fr.php).</p>
<p>All&#8217;interno del modulo possiamo usare ad esempio la variabile smarty <strong>{$module_dir}</strong> per far riferimento alla directory di questo modulo e quindi facilitarci i riferimenti all&#8217;interno di esso.</p>
<p>Questo Mymodule chiaramente non fa molto, visualizza questo blocco di codice html nella colonna di sinistra del eshop&#8230; però è il punto di partenza che ci permette di capire come funziona il sistema e sviluppare qualcosa di complesso e di personalizzato. Ci basterà quindi dare un occhiata agli altri moduli e prendere spunto.</p>
<p><strong>Riferimenti</strong></p>
<p><a title="How to create a new module for prestashop" href="http://www.prestashop.com/forums/viewthread/730/modules/how_to_create_a_new_module_any_kind" target="_blank">http://www.prestashop.com/forums/viewthread/730/modules/how_to_create_a_new_module_any_kind</a><br />
<a title="How to create a prestashop modules" href="http://marghoobsuleman.com/blogs/how-to-create-prestashop-modules" target="_blank">http://marghoobsuleman.com/blogs/how-to-create-prestashop-modules</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/realizzare-moduli-per-prestashop-ecommerce.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Portofino, un framework Java open source per webapp aziendali</title>
		<link>http://www.programmazione-web.com/portofino-framework-open-source-web-application.php</link>
		<comments>http://www.programmazione-web.com/portofino-framework-open-source-web-application.php#comments</comments>
		<pubDate>Sun, 29 Mar 2009 14:49:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Applicazioni]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/?p=196</guid>
		<description><![CDATA[Framework open source Java per applicazioni web chiamato Portofino, che è stato sviluppato dall'azienda italiana ManyDesigns. Portofino si rivolge ai programmatori di applicazioni web aziendali, offrendo rapidità di sviluppo, ricche funzionalità e qualità dei risultati.]]></description>
			<content:encoded><![CDATA[<p><strong>Portofino, un framework open source per  webapp aziendali</strong></p>
<p>Sono Paolo Predonzani e vorrei parlarvi di un<strong> framework open  source per applicazioni web chiamato Portofino</strong>, che è stato sviluppato  dall&#8217;<strong>azienda italiana ManyDesigns</strong> e che ho personalmente contribuito a  scrivere. <strong>Portofino si rivolge ai programmatori di applicazioni web aziendali,</strong> offrendo rapidità di sviluppo, ricche funzionalità e qualità dei risultati.</p>
<p><strong>Ci sono tre caratteristiche distintive di  Portofino:</strong></p>
<p>La prima è che Portofino mette l&#8217;ambiente  di sviluppo rivolto al programmatore e l&#8217;ambiente di esecuzione  dell&#8217;applicazione sviluppata rivolto agli utenti finali insieme nella  stessa applicazione web. Cioè l&#8217;ambiente di sviluppo non è più un&#8217;IDE separata,  magari come programma desktop, ma è raggiungibile &#8220;a distanza di un  click&#8221; dall&#8217;applicazione che si sta sviluppando. Per fare un paragone con  i CMS, è la stessa evoluzione che si è avuta dagli strumenti di authoring  off-line a quelli on-line. Il vantaggio è quello di velocizzare il ciclo di  sviluppo: l&#8217;applicazione è sempre on-line , testabile e modificabile  istantaneamente. In un&#8217;ottica di sviluppo agile o di requisiti da definire  durante il progetto, Portofino può essere di grande aiuto.</p>
<p>La seconda caratteristica è quella di  integrare il maggior numero possibile di funzionalità tipiche delle  applicazioni web aziendali: mascherecrud, permessi, workflow, reportistica,  attributi calcolati, validazioni, navigazione delle relazioni, breadcrumb,  combo di selezione in cascata e ricerche full-text (ma la lista è parziale)  sono tutti modelli predefiniti e facilmente configurabili. A differenza di  altri framework e RAD che permettono solo maschere crud e poco più, Portofino  crea applicazioni funzionalmente più ricche e visivamente più stimolanti.  Inoltre, l&#8217;inclusione di modelli logici (p.e.,workflow e permessi) dà  &#8220;profondità&#8221; all&#8217;applicazione che altrimenti risulterebbe solo uno  stato di &#8216;presentation&#8217; senza &#8216;business logic&#8217; sottostante.</p>
<p>La terza caratteristica è quella di  rendere l&#8217;applicazione sviluppata resistente ai cambiamenti. Pensate, nello  sviluppo tradizionale di software, alle implicazioni di un cambiamento di  schema nel database. Anche solo cambiare una colonna in una tabella può avere ripercussioni  profonde: bisogna cambiare le maschere di inserimento, le query di accesso e di  ricerca dei dati e i report. In Portofino questi inconvenienti non avvengono  perché il framework gestisce le dipendenze fra le varie parti dell&#8217;applicazione  e le mantiene coerenti nonostante i cambiamenti di modello. Qui ho fatto  l&#8217;esempio del modello dei dati ma in realtà il programmatore può modificare  qualunque dei modelli di Portofino senza paura di &#8220;spaccare&#8221;  l&#8217;applicazione.</p>
<p>Brevemente dal punto di vista architetturale,  Portofino è una webapp Java conforme all&#8217;xhtml, con alcune funzioni ajax ma con  attenzione all&#8217;accessibilità e senza necessità di plug-in nel browser. Sono  supportati i principali database: quattro commerciali e tre open-source.</p>
<p>Per chi lo volesse provare, abbiamo  creato un pacchetto one-click-start-portofino che permette lanciare Portofino  velocemente e include un&#8217;applicazione di ticket tracking di esempio. Le  istruzioni per scaricare, installare e fare i primi passi con Portofino è  disponibile al seguente indirizzo:</p>
<p><a href="http://www.manydesigns.com/documentation/tutorials/installing-and-running-the-software.html" target="_blank">http://www.manydesigns.com/documentation/tutorials/installing-and-running-the-software.html</a></p>
<p>Per chi vuole avere solo una panoramica,  è disponibile un video e una pagina di screenshot:</p>
<p><a href="http://www.manydesigns.com/portofino.html" target="_blank">http://www.manydesigns.com/portofino.html</a><a href=" http://www.manydesigns.com/portofino/screenshots.html" target="_blank"></p>
<p>http://www.manydesigns.com/portofino/screenshots.html</a></p>
<p>Articolo scritto da:</p>
<p><strong>Paolo Predonzani</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/portofino-framework-open-source-web-application.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeIgniter: organizzazione di un progetto in Subversion</title>
		<link>http://www.programmazione-web.com/codeigniter-organizzazione-progetto-in-subversion.php</link>
		<comments>http://www.programmazione-web.com/codeigniter-organizzazione-progetto-in-subversion.php#comments</comments>
		<pubDate>Sat, 13 Sep 2008 08:44:46 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[News dal web]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[codeignite framework]]></category>
		<category><![CDATA[Codeigniter community voice]]></category>
		<category><![CDATA[codeigniter organizzazione progetto]]></category>
		<category><![CDATA[codeigniter project]]></category>
		<category><![CDATA[codeigniter subversion]]></category>
		<category><![CDATA[codeigniter svn]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/?p=74</guid>
		<description><![CDATA[Organizzazione del setup di un progetto con il framework Codeigniter per facilitare la sincronizzazione e l'aggiornamento dei sorgenti del framework tramite SVN client Subversion.]]></description>
			<content:encoded><![CDATA[<p><strong>Codeigniter come organizzare un progetto del framework in Subversion</strong></p>
<p>Dall&#8217;iniziativa &#8220;Codeigniter community voice&#8221; lanciata da Derek Allard in <a title="CodeIgniter Community Voice" href="http://codeigniter.com/forums/viewannounce/81650_49/" target="_blank">questo post</a>, dove ogni settimana viene lasciato uno spazio aperto sul sito ufficiale, a qualsiasi membro del forum che abbia qualcosa di interessante da dire sul framework codeigniter.. e&#8217; venuto alla luce <a title="HOWTO: Set up a CodeIgniter project in Subversion" href="http://codeigniter.com/news/codeigniter_community_voice_howto_set_up_a_codeigniter_project_in_subversio/" target="_blank">questo utilissimo tutorial</a> dove Bruce Alderson, alias sul forum <a href="http://codeigniter.com/forums/member/65974/" target="_blank">madmaxx</a> ci spiega come organizzare al meglio un progetto con il framework Codeigniter.</p>
<p>Questo tipo di organizzazione ci permette di sviluppare e di rendere il progetto software piu&#8217; controllabile ed aggiornabile, garantendo una netta separazione tra i sorgenti dell&#8217;applicazione, i sorgenti del framework e le risorse (immagini, file htaccess e script javascript, ecc). Come potrete vedere dall&#8217;albero di directory sottostante, questo tipo di organizzazione puo&#8217; essere implementata solo su sistemi unix-like, perche&#8217; fa uso dei link simbolici.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">some-domain.com/</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; app/</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; config/</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; controllers/</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>etc<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; public/</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; .htaccess &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt; ../site-extras/.htaccess</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; favicon.ico &nbsp; &nbsp; &nbsp; &nbsp; -&gt; ../site-extras/favicon.ico</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; js/ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt; ../site-extras/js</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; images/ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt; ../site-extras/images</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; system/</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; application/ &nbsp; &nbsp;-&gt; ../../app/</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; site-extras/</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;js/</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;images/</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; .htaccess</div>
</li>
</ol>
</div>
<p>Oltre a favorire il setup del vhost, e un maggiore ordine, permette di mantenere la sincronizzazione dei sorgenti del framework con i repository ufficiali di codeigniter, tramite il client SVN (client di <a title="SVN Subversion - sistema controllo versione" href="http://it.wikipedia.org/wiki/Subversion" target="_blank">Subversion</a>), senza ovviamente intaccare le risorse e i sorgenti dell&#8217;applicazione che ne fanno uso.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/codeigniter-organizzazione-progetto-in-subversion.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Progettiamo il software o programmiamo e basta?</title>
		<link>http://www.programmazione-web.com/progettare-software-o-programmare-progettando.php</link>
		<comments>http://www.programmazione-web.com/progettare-software-o-programmare-progettando.php#comments</comments>
		<pubDate>Tue, 05 Aug 2008 20:52:42 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Applicazioni]]></category>
		<category><![CDATA[Design pattern]]></category>
		<category><![CDATA[RAD]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[ciclo di vita del software]]></category>
		<category><![CDATA[linguaggi di modellazione]]></category>
		<category><![CDATA[progettare applicazioni]]></category>
		<category><![CDATA[progettare software]]></category>
		<category><![CDATA[programmazione e sviluppo]]></category>
		<category><![CDATA[sviluppo software]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/?p=69</guid>
		<description><![CDATA[Spesso noi programmatori siamo costretti a lavorare in condizioni esasperate da tempistiche troppo stringenti, richieste e specifiche date all'ultimo minuto e margini di brainstorming ridicoli. Un software ben progettato e' piu' stabile e architetturalmente espandibile, mantenibile e il costo finale sara' inferiore.. quindi perche' non vogliamo attenerci a queste semplice regole?]]></description>
			<content:encoded><![CDATA[<p>Spesso noi programmatori siamo costretti a lavorare in condizioni esasperate da tempistiche troppo stringenti, richieste e specifiche date all&#8217;ultimo minuto e margini di brainstorming ridicoli.</p>
<p>Questo e&#8217; quello che succede in molte aziende dove spesso i project manager (cosi&#8217; amano definirsi), che in alcuni casi non hanno neanche mai seriamente progettato e sviluppato applicazioni, pretendono di vedere i risultati in tempi molto brevi.. magari preferiscono vedere la bozza del software semi funzionante, anche se concepita male, piuttosto che dare agli analisti/sviluppatori tempi adeguati di progettazione e analisi che migliorerebbero inevitabilmente la qualita&#8217; e la stabilita&#8217; finale dei software prodotti.</p>
<p>E&#8217; chiaro a tutti noi che se vengono fornite specifiche complete e precise, e c&#8217;e&#8217; il tempo di progettare l&#8217;intero <a title="Ciclo di vita del software" href="http://it.wikipedia.org/wiki/Ciclo_di_vita_del_software" target="_blank">ciclo di vita del software</a>, utilizzando pattern validi e magari linguaggi di modellazione, lo sviluppo e la manutenzione del codice sarebbe molto piu&#8217; semplice.  Anche uno sviluppatore meno esperto, con queste premesse, riuscirebbe a cimentarsi senza particolari problemi; ma purtroppo non e&#8217; sempre cosi&#8217; e si preferisce programmare e basta, progettare mentre si programma ed inevitabilmente nascono software che non stanno in piedi.</p>
<p>Sara&#8217; la senzazione di risparmio? Sara&#8217; che meglio un uovo oggi che una gallina domani? mah..</p>
<p>Progettare software e&#8217; un investimento, se si vuole fare le cose di fretta e senza riflettere si finisce per buttare via soldi e tempo, oltre a creare un prodotto di scarsa qualita&#8217;; poi noi ci troveremo a mettere continuamente mano a progetti pieni di toppe e ripieghi che per sistemare un bug impieghiamo giornate di lavoro!</p>
<p>Un software ben progettato e&#8217; piu&#8217; stabile e architetturalmente espandibile, mantenibile e il costo finale sara&#8217; inferiore.. quindi perche&#8217; non vogliamo attenerci a queste semplice regole?</p>
<p><!-- message --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/progettare-software-o-programmare-progettando.php/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>&#8220;Professional Codeigniter&#8221; il nuovo libro per sviluppare con PHP</title>
		<link>http://www.programmazione-web.com/libro-professional-codeigniter-framework-mvc.php</link>
		<comments>http://www.programmazione-web.com/libro-professional-codeigniter-framework-mvc.php#comments</comments>
		<pubDate>Tue, 29 Jul 2008 22:51:41 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[News dal web]]></category>
		<category><![CDATA[Programmare Php]]></category>
		<category><![CDATA[RAD]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[codeigniter book]]></category>
		<category><![CDATA[codeigniter libro]]></category>
		<category><![CDATA[codeigniter wrox]]></category>
		<category><![CDATA[MVC approach]]></category>
		<category><![CDATA[pattern MVC]]></category>
		<category><![CDATA[professional codeigniter]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/?p=64</guid>
		<description><![CDATA[Libro Wrox dedicato allo sviluppo con il framework php MVC Codeigniter, framework MVC, framework PHP RAD. Professional Codeigniter book Wrox libro programmazione php per gli sviluppatori web.]]></description>
			<content:encoded><![CDATA[<p><strong>&#8220;Professional Codeigniter&#8221; il nuovo libro per sviluppare con PHP in MVC</strong></p>
<p>Dopo l&#8217;uscita dello scorso anno del libro &#8220;CodeIgniter for Rapid PHP Application Development” (pubblicato da <a title="Packt publishing" href="http://www.packtpub.com/" target="_blank">PAKT publishing</a>), nel giugno 2008 la nota casa editrice Wrox press pubblica una nuova guida di 336 pagine completamente dedicata al &#8220;nostro&#8221; framework php Codeigniter. Il libro e&#8217; stato scritto da Thomas Myer e si intitola <a href="http://www.ibs.it/book/9780470282458/myer-thomas/professional-codeigniter.html" target="_blank">Professional Codeigniter</a><strong> </strong>ed e&#8217; acquistabile e reperibile dall&#8217;italia in pochi giorni comodamente presso <a title="Internet books shop" href="http://www.ibs.it/" target="_blank">IBS</a>(Internet book shop).</p>
<p><a href="http://www.programmazione-web.com/wp-content/uploads/2008/07/codeigniter_book.jpg"><img class="alignnone size-medium wp-image-68" title="codeigniter_book" src="http://www.programmazione-web.com/wp-content/uploads/2008/07/codeigniter_book-239x300.jpg" alt="" width="239" height="300" /></a></p>
<p>Il nuovo libro in inglese &#8220;<a title="Professional Codeigniter by Wrox" href="http://www.wrox.com/WileyCDA/WroxTitle/productCd-0470282452.html" target="_blank">Professional Codeigniter</a>&#8221; conterra&#8217; tutte le informazioni e i tutorial necessari agli sviluppatori php per apprendere e implementare applicazioni Rails-like senza dover imparare nuovi linguaggi. Codeigniter infatti utilizza una metodologia di sviluppo che usa il pattern MVC (Model view controller) molto utilizzato ed apprezzato dagli programmatori professionisti. Nel libro verra&#8217; fatta una panoramica sul pattern MVC, sulle metodologie di sviluppo e verranno creati diversi esempi di applicazioni come CMS, blog e forum utilizzando Codeigniter e conterra&#8217; le informazioni necessarie a risolvere le problematiche che si incontreranno nello sviluppo di ogni giorno.</p>
<p><span class="tcorpotesto">Nel libro ci saranno i seguenti argomenti:</span></p>
<ul>
<li><span class="tcorpotesto">agile methodologies and approaches</span></li>
<li><span class="tcorpotesto">MVC approach</span></li>
<li><span class="tcorpotesto">helpers and libraries</span></li>
<li><span class="tcorpotesto">model and schema for products</span></li>
<li><span class="tcorpotesto">Ajax and Scriptaculous</span></li>
</ul>
<p>Se qualcuno di voi lo acquista e lo legge saremmo tutti felici di leggere i pareri nei commenti.. <img src='http://www.programmazione-web.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Io a breve molto probabilmente lo compro!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/libro-professional-codeigniter-framework-mvc.php/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Codeigniter Redux Authentication: libreria per l&#8217;autenticazione</title>
		<link>http://www.programmazione-web.com/codeigniter-redux-authentication-libreria-per-lautenticazione.php</link>
		<comments>http://www.programmazione-web.com/codeigniter-redux-authentication-libreria-per-lautenticazione.php#comments</comments>
		<pubDate>Sat, 05 Jul 2008 14:24:06 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Applicazioni]]></category>
		<category><![CDATA[Classi e librerie]]></category>
		<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Programmare Php]]></category>
		<category><![CDATA[RAD]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[autenticazione utenti]]></category>
		<category><![CDATA[libreria autenticazione]]></category>
		<category><![CDATA[libreria autenticazione redux]]></category>
		<category><![CDATA[libreria codeigniter]]></category>
		<category><![CDATA[redux autenticazione utenti]]></category>
		<category><![CDATA[Redux Authentication library]]></category>
		<category><![CDATA[user managment]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/?p=60</guid>
		<description><![CDATA[Redux Authtentication library, libreria per il framework codeigniter, che implementa l'autenticazione in modo veloce e in piena sicurezza]]></description>
			<content:encoded><![CDATA[<p><strong>Codeigniter Redux Authentication: libreria per l&#8217;autenticazione</strong><br />
In questo caldissimo mese di luglio vi voglio presentare Redux Authtentication library, un pacchetto per l&#8217;autenticazione da utilizzare con il &#8220;nostro&#8221; amato framework php Codeigniter. Questa libreria ci consente di creare in modo facile e super veloce l&#8217;accesso protetto al backend dei nostri progetti e di avere una base solida su cui costruire e personalizzare la sicurezza della nostra applicazione web.</p>
<h3>Le features di questa libreria sono:</h3>
<ul>
<li>Registrazione degli utenti</li>
<li>Login e logout</li>
<li>Gestione perdita password</li>
<li>Gestione gruppi utenti</li>
<li>Sistema di Ban degli utenti</li>
<li>Focalizzata sulla sicurezza</li>
</ul>
<p>Come accennato, l&#8217;installazione di questa libreria per Codeigniter è molto semplice e viene fatta seguendo questi pochi step:</p>
<ul>
<li>Creare il database della nostra applicazione codeigniter oppure utilizzare il database esistente (se il progetto è già iniziato), ed importare il file<strong> install.sql </strong>(contenuto nel pacchetto) nel nostro database, contenente le tabelle per Redux.</li>
<li>All&#8217;interno del pacchetto della libreria Redux Authentication troveremo la cartella application in cui sono contenute altre due cartelle config/ e libraries/ in cui all&#8217;interno ci sono rispettivamente il file per la configurazione della libreria e in libraries il file contenente la classe con i metodi Redux. Chiaramente questo contenuto dovrà essere copiato nella nostra cartella application della nostra applicazione nelle rispettive cartelle.</li>
<li>Un volta fatto questo andremo nel file <strong>config/config.php</strong> e abiliteremo le variabili di sessione:
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$config</span><span class="br0">&#91;</span><span class="st0">&#8217;sess_encrypt_cookie&#8217;</span><span class="br0">&#93;</span> &nbsp;= <span class="kw2">TRUE</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$config</span><span class="br0">&#91;</span><span class="st0">&#8217;sess_use_database&#8217;</span><span class="br0">&#93;</span> &nbsp; &nbsp;= <span class="kw2">TRUE</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$config</span><span class="br0">&#91;</span><span class="st0">&#8217;sess_match_ip&#8217;</span><span class="br0">&#93;</span> &nbsp; &nbsp; &nbsp; &nbsp;= <span class="kw2">TRUE</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$config</span><span class="br0">&#91;</span><span class="st0">&#8217;sess_match_useragent&#8217;</span><span class="br0">&#93;</span> = <span class="kw2">TRUE</span>;</div>
</li>
</ol>
</div>
<p>Nel mio caso per la configurazione delle sessioni su DB Mysql ho seguito questa guida <a title="Codeigniter DB Session" href="http://codeigniter.com/wiki/DB_Session/" target="_blank">http://codeigniter.com/wiki/DB_Session/</a></li>
<li>Sistemate le sessioni possiamo configurare a dovere il file <strong>config/redux_auth.php</strong>, in cui non mi addentro perchè è abbastanza semplice e ben commentato, poi non mi pare abbia bisogno di particolari modifiche.</li>
<li>Per comodità, sarebbe opportuno configurare in <strong>config/autoload.php</strong> il caricamento automatico della libreria redux, perchè altrimenti bisogna ricordarsi di farlo ogni volta che la si utilizza nei metodi del controller. Ricordandoci che Redux carica in automatico le librerie per le email e le sessioni.
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$autoload</span><span class="br0">&#91;</span><span class="st0">&#8216;libraries&#8217;</span><span class="br0">&#93;</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&quot;redux_auth&quot;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
</li>
</ul>
<p>Dopo questa breve configurazione sarà possibile sfruttare tutta la potenza della libreria Redux Authentication, all&#8217;interno del pacchetto nei files di esempio avremo il controller <strong>user.php</strong> che illustra molto bene come vengono implementate le funzioni di base per costruire una autenticazione completa e anche come si apprestano facilmente alla personalizzazione.</p>
<h3>Per farvi un esempio di semplice controller con il solo login:</h3>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">class</span> user <span class="kw2">extends</span> Controller</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> index <span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;This is the user Controller&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> login <span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rules</span><span class="br0">&#91;</span><span class="st0">&#8216;email&#8217;</span><span class="br0">&#93;</span> &nbsp; &nbsp;= <span class="st0">&#8216;trim|required&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$rules</span><span class="br0">&#91;</span><span class="st0">&#8216;password&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&#8216;trim|required&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">validation</span>-&gt;<span class="me1">set_rules</span><span class="br0">&#40;</span><span class="re0">$rules</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">validation</span>-&gt;<span class="me1">run</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$login</span> = <span class="re0">$this</span>-&gt;<span class="me1">redux_auth</span>-&gt;<span class="me1">login</span><span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">input</span>-&gt;<span class="me1">post</span><span class="br0">&#40;</span><span class="st0">&#8216;email&#8217;</span><span class="br0">&#41;</span>, <span class="re0">$this</span>-&gt;<span class="me1">input</span>-&gt;<span class="me1">post</span><span class="br0">&#40;</span><span class="st0">&#8216;password&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$i</span> = <span class="br0">&#40;</span><span class="re0">$login</span><span class="br0">&#41;</span> ? redirect<span class="br0">&#40;</span><span class="st0">&#8221;</span><span class="br0">&#41;</span> : <span class="st0">&#8216;false&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">view</span><span class="br0">&#40;</span><span class="st0">&#8216;login&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Chiaramente se utilizziamo il controller già fatto dovremmo creare poi tutte le viste che vengono richiamate da esso. Per chi è inesperto e vuole comunque facilitarsi la vita all&#8217;inizio gli consiglio di scaricarle dal secondo link nei riferimenti qui sotto.</p>
<h3>Un esempio di come effettuare il controllo nelle pagine protette lato backend:</h3>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Admin <span class="kw2">extends</span> Controller <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">function</span> Admin<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parent::<span class="me2">Controller</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">function</span> index<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">redux_auth</span>-&gt;<span class="me1">logged_in</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>&#8230;<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>&#8230;<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>E&#8217; tutto.. quindi buona autenticazione con Redux!</p>
<p><strong>Riferimenti</strong>:</p>
<p><a title="Redux Authentication library" href="http://code.google.com/p/reduxauth/" target="_blank">http://code.google.com/p/reduxauth/</a><br />
<a title="Redux Authentication Example “View” Files  " href="http://codeigniter.com/forums/viewthread/72525/" target="_blank">http://codeigniter.com/forums/viewthread/72525/</a><br />
<a title="Codeigniter DB Session" href="http://codeigniter.com/wiki/DB_Session/" target="_blank">http://codeigniter.com/wiki/DB_Session/</a><br />
<a title="Codeigniter Sessions" href="http://codeigniter.com/user_guide/libraries/sessions.html" target="_blank">http://codeigniter.com/user_guide/libraries/sessions.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/codeigniter-redux-authentication-libreria-per-lautenticazione.php/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CodeIgniter 1.6.3 nuova fixed release per il framework php</title>
		<link>http://www.programmazione-web.com/codeigniter-163-nuova-fixed-release-per-il-framework-php.php</link>
		<comments>http://www.programmazione-web.com/codeigniter-163-nuova-fixed-release-per-il-framework-php.php#comments</comments>
		<pubDate>Sun, 29 Jun 2008 15:19:58 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[News dal web]]></category>
		<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Programmare Php]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[codeigniter 1.6.3]]></category>
		<category><![CDATA[codeigniter nuova release]]></category>
		<category><![CDATA[codeigniter nuova versione]]></category>
		<category><![CDATA[nuova versione codeigniter]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/?p=61</guid>
		<description><![CDATA[Codeigniter framework php nuova realase 1.6.3 rilasciato alla fine di giugno 2008, contiene notevoli bigfixes e altri miglioramenti alle features esistenti]]></description>
			<content:encoded><![CDATA[<p><strong>CodeIgniter 1.6.3 nuova fixed release per il framework php</strong></p>
<p>Lo staff di sviluppo del framework CodeIgniter è stato come al solito felice di annunciare il rilascio della nuova versione 1.6.3 annunciato sul <a title="Codeigniter official site" href="http://codeigniter.com/" target="_blank">sito ufficiale di codeigniter</a> il 26/06/2008. Questa versione, la 1.6.3 è pressochè identica a livello funzionale, si tratta infatti di una relase di mantenimento, include la risoluzione di vari bug diagnosticati e alcune rifiniture di features esistenti già nella precedente release. I dettagli potranno essere visionati come al solito nel <a title="Codeigniter Changelog" href="http://codeigniter.com/user_guide/changelog.html" target="_blank">Change Log</a>.</p>
<p>In aggiunta, grazie al contributo esterno di un membro della comunità di Codeigniter, Pascal Kriete (Inparo), è stato identificato ed eliminato una potenziale vulnerabilità che consentiva di bucare i siti con la tecnica del cross-site scripting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/codeigniter-163-nuova-fixed-release-per-il-framework-php.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
