<?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; kohana vs codeigniter.</title>
	<atom:link href="http://www.programmazione-web.com/tag/kohana-vs-codeigniter/feed" rel="self" type="application/rss+xml" />
	<link>http://www.programmazione-web.com</link>
	<description>il Blog open degli sviluppatori del web!</description>
	<lastBuildDate>Mon, 25 Jul 2011 16:39:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Kohana vs Codeigniter: Scegliere un framework php</title>
		<link>http://www.programmazione-web.com/scegliere-un-framework-php-kohana-vs-codeigniter.php</link>
		<comments>http://www.programmazione-web.com/scegliere-un-framework-php-kohana-vs-codeigniter.php#comments</comments>
		<pubDate>Fri, 21 Mar 2008 13:27:27 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Programmare Php]]></category>
		<category><![CDATA[RAD]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[codeigniter vs kohana]]></category>
		<category><![CDATA[confronto kohana e codeingniter]]></category>
		<category><![CDATA[framework php]]></category>
		<category><![CDATA[kohana php framework]]></category>
		<category><![CDATA[kohana vs codeigniter.]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/scegliere-un-framework-php-kohana-vs-codeigniter.php</guid>
		<description><![CDATA[Come scegliere il migliore framework php, confronto tra framework MVC in php, kohana vs codeigniter, codeigniter vs kohana.]]></description>
			<content:encoded><![CDATA[<p><strong>Scegliere un framework php, confronto tra il framework kohana php e codeigniter</strong>.</p>
<p>Ogni programmatore che si rispetti, che vuole rimanere competitivo sul mercato, è sempre alla continua ricerca di qualche libreria/framework che gli permetta di semplificare il proprio lavoro, ovvero: ridurre i tempi di sviluppo, migliorare sempre le proprie applicazioni, ottenenere  risultati ottimi avvalendosi di strumenti efficienti, senza dover ogni volta &#8220;reinventare la ruota&#8221; ecc.<br />
Esistono per questo framework, insiemi di librerie e di classi dall&#8217;utilizzo più o meno standard, che ci permettono di programmare in modo più semplice, estendendo l&#8217;esistente, senza doverci preoccupare direttamente di alcune problematiche: ad esempio dell&#8217;interfacciamento al database o dell&#8217;implementazione della sicurezza o di altri dettagli implementativi che allungano notevolmente i tempi di sviluppo, aumentano la complessibilità, diminuendo la gestibilità complessiva, e facendoci perdere sostanzialmente denaro.</p>
<p>Purtroppo o per fortuna, esistono tantissimi framework, e sicuramente fare la &#8220;scelta giusta&#8221; (eliminando le tempistiche di provare e imparare strumenti inadeguati ai nostri scopi) non è sicuramente banale.</p>
<p>Leggendo <a title="notes on choosing a php framework" href="http://thislab.com/2008/02/23/notes-on-choosing-a-php-framework-a-quick-comparison-of-codeigniter-and-kohana/" target="_blank">questo articolo</a> di Fred Wu, mi sono reso conto che ho ripercorso la stessa strada durante la scelta del mio strumento di programmazione, quindi voglio riportare più o meno le medesime considerazioni che mettono in comparazione il framework che attualmente stò utilizzando (Codeigniter) e il suo &#8220;rivale&#8221;, il fork <a title="Kohana php framework" href="http://kohanaphp.com/" target="_blank">kohana php</a> che potrebbe sostanzialmente riampiazzarlo.</p>
<p>Inizialmente il primo framework che ho provato è stato <a onclick="javascript:pageTracker._trackPageview('/outbound/article/cakephp.org');" href="http://cakephp.org/">CakePHP</a>, al tempo la documentazione era praticamente inesistente e sicuramente utilizzare un framework senza documentazione è da autolesionisti, perchè comporta sicuramente molto più studio personale, quindi ho cercato subito un&#8217;alternativa più accessibile.<br />
Ho fatto diverse ricerche, ero orientato su due framework, il famosissimo Zend e Codeigniter, ma alla fine ho optato per <a title="Codeigniter Framework" href="http://codeigniter.com/" target="_blank">CodeIgniter</a>. Soprattutto per la splendida documentazione online (in inglese). Infatti la documentazione di Codeigniter è veramente impressionante, nel senso buono: completa, molto chiara e ben corredata di esempi; per un programmatore che conosce i linguaggi ad oggetti e php, basta un piccola letta per iniziare subito a sviluppare e creare in tempi brevi applicazioni molto potenti.</p>
<p>CodeIgniter è un framework che ha avuto in questi tempi ottimi progressi e ha guadagnato la fiducia di molti sviluppatori web, anche se tempo fa aveva rallentato la sua corsa perchè gli sviluppatori erano quasi tutti concentrati sulla nuova versione di <a title="expresssion engine" href="http://expressionengine.com/" target="_blank">ExpressionEngine CMS</a>. Infatti alcuni degli assidui utilizzatori sul forum di Codeigniter erano molto frustrati, perché segnalavano bug e richieste di nuove funzionalità, ma venivano quasi sempre ignorati, o rimanevano in attesa dei mesi. Questo chiaramente, fece si che gli sviluppatori interessati realmente all&#8217;avanzamento del progetto, decisero di far nascere il fork BlueFlame, più tardi rinominato in <a title="Kohana php framework" href="http://kohanaphp.com/" target="_blank">Kohana</a>, e di iniziare uno sviluppo parallello prendendo alcune decisioni tecniche diverse.</p>
<p>Kohana è un framework php praticamente sconosciuto al grande pubblico. Infatti, la maggior parte degli utenti Kohana sono ex utilizzatori di Codeigniter o utenti che usano entrambi a seconda delle necessità. Secondo <a title="Wikipedia kohana php" href="http://en.wikipedia.org/wiki/KohanaPHP" target="_blank">Wikipedia</a>, le differenze tra Kohana e CodeIgniter sono:</p>
<ol>
<li><strong>La programmazione ad oggetti strettamente PHP5</strong> offre molti vantaggi: protezione per l&#8217;incapsulamento dei dati, il caricamento automatico delle classi, l&#8217;overloading, le interfacce astratte, <a title="Pattern singleton" href="http://it.wikipedia.org/wiki/Singleton" target="_blank">singleton</a>, ecc.</li>
<li>Kohana ha aderito alla <strong>iniziativa <a title="iniziativa gophp5" href="http://gophp5.org/" target="_blank">GoPHP5</a></strong>, quindi utte le versioni dalla 2.2 sono quindi conformi con questo progetto.</li>
<li><strong>Il design pattern è sempre MVC</strong>, quindi chiunque abbia utilizzato Codeigniter capisce rapidamente come utilizzare Kohana per la similitudine della struttura e del design pattern.</li>
<li><strong>Kohana è una comunità di sviluppatori, non un&#8217;azienda guidata</strong>. Kohana è guidata dagli utenti del forum, dalle idee e dal codice condiviso dagli utilizzatori. Kohana è una comunità di sviluppatori dislocata in tutto il mondo, ciascuno con il proprio talento. Questo consente un  ciclo di sviluppo del software rapido e flessibile, in grado di rispondere alle richieste dei bug nel giro di poche ore, invece di giorni o mesi.</li>
<li><strong>Le variabili GET, POST, COOKIE, SESSION funzionano come previsto</strong>, Kohana ha deciso di non limitare il vostro accesso ai dati globali, offrendo comunque la stessa protezione di filtraggio e di <a title="Cross site scripting" href="http://it.wikipedia.org/wiki/Cross-site_scripting" target="_blank">XSS</a> che fa CodeIgniter.</li>
<li>Per quanto riguarda le risorse, i moduli, e l&#8217;ereditarietà: i controller, i modelli, le librerie, le viste e gli helpers, possono essere caricati da qualsiasi posizione all&#8217;interno del vostro sistema, applicazione, o percorso e le opzioni di configurazione sono ereditate dinamicamente e possono essere tranquillamente sovrascritte.</li>
<li><strong>Nessun conflitto di Namespaces</strong>. I suffissi delle classi, come _Controller, sono utilizzati per prevenire i conflitti di namespace. Questo permette quindi di implementare diversi controller e modelli e caricarli allo stesso tempo.</li>
<li><strong>Vero Auto-loading dinamico delle classi</strong>. Questo include le librerie, i controller, modelli, e gli helpers.</li>
<li><strong>Gli helpers sono classi statiche</strong>, non funzioni. Per esempio, invece di utilizzare form_open (), si usa modulo::open ().</li>
<li><strong>Libreria driver e API coerenti</strong>. Librerie dove è possibile utilizzare diversi &#8220;driver&#8221;, gestire diverse API esterne in modo del tutto trasparente.</li>
<li><strong>Potente gestione degli eventi</strong>. Kohana gestisce gli eventi facendo si che è possibile aggiungere gli eventi in modo dinamico, sostituirli, o addirittura rimuoverli completamente. Questo permette molti cambiamenti al processo di esecuzione di Kohana, senza dover fare alcuna modifica al core del sistema.</li>
</ol>
<p>Come si può vedere da questa lista, pur mantenendo un certo grado di somiglianza con CodeIgniter, Kohana offre alcuni vantaggi (al tempo stesso, alcuni svantaggi, dipende dai punti di vista). Per fare ulteriore chiarezza diamo un&#8217;occhiata alla tabella sottostante, che non ho volutamente tradotto, perchè già molto chiara e schematica. Chiaramente per la valutazione verranno considerate solo le funzionalità disponibili nei pacchetti ufficiali, non quelle integrabili attraverso estensioni di terze parti.</p>
<table border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<th>Feature</th>
<th>CodeIgniter 1.6.1</th>
<th>Kohana 2.1.1</th>
<th>Notes</th>
</tr>
<tr>
<td>License</td>
<td><a onclick="javascript:pageTracker._trackPageview('/outbound/article/codeigniter.com');" href="http://codeigniter.com/user_guide/license.html">Apache/BSD-style</a></td>
<td><a onclick="javascript:pageTracker._trackPageview('/outbound/article/kohanaphp.com');" href="http://kohanaphp.com/license.html">new BSD</a></td>
<td>Licenses are similar, although Kohana uses the new BSD license which is slightly more flexible than CI’s modified BSD license.</td>
</tr>
<tr>
<td>PHP compatibility</td>
<td>4.3.2+ and 5</td>
<td>5.1.3+</td>
<td>CodeIgniter supports PHP4 whilst Kohana is a stict PHP5 framework. If you are using PHP5 then Kohana offers more OOP and performance advantages. Start from version 2.2 (yet to be released), Kohana will only support PHP 5.2+.</td>
</tr>
<tr>
<td>Supported Databases</td>
<td>MySQL (4.1+)<br />
MySQLi<br />
MS SQL<br />
PostgreSQL<br />
SQLite<br />
Oracle<br />
ODBC</td>
<td>MySQL<br />
PostgreSQL<br />
SQLite</td>
<td>CodeIgniter’s longer history ensures us a more widely available database support options than Kohana, although in the future Kohana is likely to support more databases too.</td>
</tr>
<tr>
<td>Community</td>
<td><a onclick="javascript:pageTracker._trackPageview('/outbound/article/codeigniter.com');" href="http://codeigniter.com/forums/">Forum</a><br />
<a onclick="javascript:pageTracker._trackPageview('/outbound/article/codeigniter.com');" href="http://codeigniter.com/wiki/">Wiki</a><br />
<a onclick="javascript:pageTracker._trackPageview('/outbound/article/codeigniter.com');" href="http://codeigniter.com/bug_tracker/">Bug Tracker</a></td>
<td><a onclick="javascript:pageTracker._trackPageview('/outbound/article/forum.kohanaphp.com');" href="http://forum.kohanaphp.com/">Forum</a><br />
<a onclick="javascript:pageTracker._trackPageview('/outbound/article/trac.kohanaphp.com');" href="http://trac.kohanaphp.com/">Trac</a><br />
<a onclick="javascript:pageTracker._trackPageview('/outbound/article/irc.freenode.net');" href="irc://irc.freenode.net/kohana">IRC</a></td>
<td>CodeIgniter obviously has a much larger community and offers a wiki for community members to share tutorials and code snippets. Kohana on the other hand, has a smaller community, however the developers are actively online on the forum and IRC.</td>
</tr>
<tr>
<td>Documentation / User Guide</td>
<td>Excellent</td>
<td>Limited</td>
<td>CodeIgniter is known for its excellent user guide. Kohana is in the process of improving its documentation.</td>
</tr>
<tr>
<td>Tutorial / Sample Availability</td>
<td>Good</td>
<td>Fair</td>
<td>Tutorials are available on both of their forums. CodeIgniter has the advantage of having a wiki for easier navigation. Kohana on the other hand, has a dedicated <a onclick="javascript:pageTracker._trackPageview('/outbound/article/kohanaphp.com');" href="http://kohanaphp.com/tutorials.html">tutorial page</a> for some of the tutorials.</td>
</tr>
<tr>
<td>MVC</td>
<td>Strict</td>
<td>Strict</td>
<td>Both frameworks use the same MVC approach.</td>
</tr>
<tr>
<td>Modular / <a title="Hierarchical-Model-View-Controller" href="http://en.wikipedia.org/wiki/Hierarchical-Model-View-Controller" target="_blank">HMVC</a></td>
<td>Via 3rd party libraries</td>
<td>Built in</td>
<td>Kohana is built with HMVC in mind whilst CodeIgniter has some 3rd party libraries such as <a onclick="javascript:pageTracker._trackPageview('/outbound/article/codeigniter.com');" href="http://codeigniter.com/forums/viewthread/65749/">Matchbox</a> and <a onclick="javascript:pageTracker._trackPageview('/outbound/article/codeigniter.com');" href="http://codeigniter.com/forums/viewthread/72123/">Modular HMVC</a> to accomplish the same effect.</td>
</tr>
<tr>
<td>Conventions</td>
<td>Flexible</td>
<td>Flexible</td>
<td>Unlike CakePHP, both of the frameworks offer flexible convensions. There are some defaults but most of them can be overwritten.</td>
</tr>
<tr>
<td>Configuration</td>
<td>PHP files</td>
<td>PHP files</td>
<td>In my opinion Kohana is more configurable than CodeIgniter yet it is simpler (less clustered) to do so! Most of the Kohana configuration files are stored in the system folder, you only copy and paste the ones you actually need to modify, and modify them accordingly. CodeIgniter’s config files are all stored in the application folder.</td>
</tr>
<tr>
<td>Database Abstraction</td>
<td>Modified ActiveRecord</td>
<td>Modified ActiveRecord<br />
ORM (optional)</td>
<td>Both frameworks use the modified ActiveRecord pattern. Kohana has an optional ORM module. CodeIgniter has some ORM and Rails-style ActiveRecord implementation avaliable via 3rd party libraries.</td>
</tr>
<tr>
<td>ACL</td>
<td>Via 3rd party libraries</td>
<td>Auth library (optional)</td>
<td>Neither of the frameworks forces you to use a specific ACL mechanism. CodeIgniter does not have one built in, and Kohana has one available as an optional module.</td>
</tr>
<tr>
<td>Validation</td>
<td>Good</td>
<td>Good</td>
<td>Both frameworks offer a good built in validtion layer. Kohana 2.2 is planned to have some significant improvements for the validation library.</td>
</tr>
<tr>
<td>Caching</td>
<td>Limited</td>
<td>Fair</td>
<td>In my opinion both of the caching features are limited. Kohana offers a slightly more useful cache library that supports file, SQLite, APC, eAccelerator, memcache, and Xcache based caching, with tag support.</td>
</tr>
<tr>
<td>Session</td>
<td>Good</td>
<td>Excellent</td>
<td>CodeIgniter 1.6 has improved its session library, but it’s still inferior to Kohana’s implementation. Kohana’s session library supports both encryption and storing session data in database.</td>
</tr>
<tr>
<td>Logging / Debugging</td>
<td>Good</td>
<td>Excellent</td>
<td>Both frameworks offer very good logging and debugging mechanisms. Kohana is a little bit ahead thanks to PHP5’s native Exception class and its powerful event handlers.</td>
</tr>
<tr>
<td>Templating</td>
<td>Native PHP</td>
<td>Native PHP</td>
<td>Templating is *very* easy for both frameworks. If you can skin WordPress, then you’d have no problems at all skinning CI or Kohana. If you want though, you can still incorporate one of the 3rd party templating solutions such as Smarty.</td>
</tr>
<tr>
<td>Helpers</td>
<td>Good</td>
<td>Good</td>
<td>Helpers are usually libraries that used for simple, repetitive tasks. Both frameworks offer a wide range of helpers for handling forms, URLs and dates, etc.</td>
</tr>
<tr>
<td>JavaScript / AJAX</td>
<td>N/A</td>
<td>N/A</td>
<td>Both frameworks respect your choice of JavaScript / AJAX frameworks. Unlike CakePHP and Ruby on Rails, they don’t have built-in helpers for any of the JavaScript libraries. This offers more flexibility as well as the use of unobtrusive JavaScript.</td>
</tr>
<tr>
<td>Web Services</td>
<td>Fair</td>
<td>Fair</td>
<td>I could be wrong but I don’t think either framework supports (or at least encourages) RESTful design…</td>
</tr>
<tr>
<td>Localization</td>
<td>Limited</td>
<td>Good</td>
<td>CodeIgniter has limited i18n support whilst Kohana offers a bit more (timezone / full UTF8 layer, etc).</td>
</tr>
<tr>
<td>Unit Testing</td>
<td>Limited</td>
<td>None *</td>
<td>CodeIgniter’s built in unit testing class is very limited. * Kohana as of version 2.1.1 does not have a unit testing class, however it is planned for version 2.2.</td>
</tr>
</tbody>
</table>
<h3>Il verdetto</h3>
<p>E&#8217; molto difficile decidere quale dei due framework utilizzare, entrambi hanno caratterstiche molto simili e forse Kohana nel tempo potrebbe affermarsi per la sua flessibilità, ma sicuramente ha ancora bisogno di crescere e di completare i propri supporti e la propria documentazione. CodeIgniter è sicuramente ottimo, soprattutto se si ha la necessità di avere ancora la retro compatibilità sull&#8217;ormai morto PHP4,  ricordando che sicuramente è il framework migliore dal punto di vista della documentazione e possiede un bacino di utenza più ampio da cui poter trarre spunti e confronti.</p>
<p><strong>Riferimenti:</strong><br />
<a title="comparison of codeigniter and kohana" href="http://thislab.com/2008/02/23/notes-on-choosing-a-php-framework-a-quick-comparison-of-codeigniter-and-kohana/" target="_blank">http://thislab.com</a></p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.programmazione-web.com%2Fscegliere-un-framework-php-kohana-vs-codeigniter.php&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/scegliere-un-framework-php-kohana-vs-codeigniter.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

