<?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>Webgriffe® magazine &#187; PHP</title>
	<atom:link href="http://blog.webgriffe.com/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.webgriffe.com</link>
	<description>Immaginare, creare e innovare.</description>
	<lastBuildDate>Wed, 21 Jul 2010 13:35:44 +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>Webgriffe speaker al Flash Camp on the beach di Rimini</title>
		<link>http://blog.webgriffe.com/webgriffe-speaker-al-flash-camp-on-the-beach-di-rimini/</link>
		<comments>http://blog.webgriffe.com/webgriffe-speaker-al-flash-camp-on-the-beach-di-rimini/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 10:02:47 +0000</pubDate>
		<dc:creator>Alessandro Ronchi</dc:creator>
				<category><![CDATA[Eventi]]></category>
		<category><![CDATA[Per chi fa Web]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Camp on the beach]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[FlexCamp]]></category>
		<category><![CDATA[fxDao]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webgriffe]]></category>

		<guid isPermaLink="false">http://blog.webgriffe.com/?p=676</guid>
		<description><![CDATA[Sabato 5 settembre presso l&#8217;hotel Sporting a Rimini si terrà il Flash Camp on the beach. Webgriffe interverrà come speaker per presentare fxDao, un gateway PHP open source scritto per facilitare lo sviluppo di applicazioni Flex che accedono a DBMS MySQL. L&#8217;idea alla base di fxDao è quella di fornire uno strumento che consenta di [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-683" title="fxDaoSmall" src="http://blog.webgriffe.com/wp-content/uploads/2009/08/fxDaoSmall.png" alt="fxDaoSmall" width="120" height="99" />Sabato <strong>5 settembre</strong> presso l&#8217;hotel Sporting a <strong>Rimini </strong>si terrà il <strong>Flash Camp on the beach</strong>. <strong>Webgriffe </strong>interverrà come <strong>speaker </strong>per presentare <strong>fxDao</strong>, un gateway PHP <strong>open source</strong> scritto per facilitare lo sviluppo di <strong>applicazioni Flex</strong> che accedono a DBMS <strong>MySQL</strong>.</p>
<p>L&#8217;idea alla base di fxDao è quella di fornire uno strumento che consenta di sviluppare applicazioni <strong>più rapidamente</strong>, senza abbandonare mai l&#8217;ambiente di sviluppo Flex. Il codice di <strong>accesso ai dati</strong> viene, infatti, sviluppato in <strong>ActionScript </strong>sfruttando una classe <em>helper </em>che facilita la scrittura delle query SQL e demandando al gateway fxDao il compito di eseguirle su MySQL ritornando i risultati in maniera asincrona e trasparente.</p>
<p>La differenza che l&#8217;utilizzo di fxDao comporta rispetto all&#8217;approccio di sviluppo tradizionale di un&#8217;applicazione <em>data driven in </em>Flex sta nel fatto che non è necessario sviluppare la logica di accesso ai dati sul server per poi interagire con questo tramite <em>remoting server</em> o <em>web service</em>.</p>
<p>fxDao è nella sua fase di <em>startup</em> e necessita sicuramente di ulteriori sviluppi. Si presta ad essere <strong>portato </strong>su altre piattaforme server diverse da PHP (Java, .NET, Ruby) ed essendo un progetto open source può avvalersi della <strong>collaborazione </strong>di altri sviluppatori. Presentarlo al Flash Camp on the beach costituisce per noi l&#8217;occasione di farlo <strong>conoscere </strong>e magari raccogliere adesioni.</p>
<p>Sei uno sviluppatore Flash/Flex? <strong>Non mancare</strong> al Flash Camp on the beach, l&#8217;ingresso è <strong>gratuito </strong>ma <strong>i posti sono limitati</strong>, affrettati a registrarti!</p>
<h2>Riferimenti</h2>
<ul>
<li><a title="Flash Camp on the beach" href="http://www.flexcamp.it/2009/07/18/flash-camp-on-the-beach-registrations-opened/">Flash Camp on the beach</a> su flexcamp.it</li>
<li><a title="fxDao" href="http://code.google.com/p/fxdao/">fxDao</a> su Google Code</li>
</ul>


<p>Articoli correlati:</h2><ol><li><a href='http://blog.webgriffe.com/chafic-kazoun-e-joey-lott-programming-flex-2/' rel='bookmark' title='Permanent Link: Chafic Kazoun e Joey Lott, Programming Flex 2'>Chafic Kazoun e Joey Lott, Programming Flex 2</a></li>
<li><a href='http://blog.webgriffe.com/photodiary-opensource/' rel='bookmark' title='Permanent Link: photoDiary: openSource by Webgriffe'>photoDiary: openSource by Webgriffe</a></li>
<li><a href='http://blog.webgriffe.com/google-yahoo-e-adobe-uniti-per-indicizzare-i-siti-in-flash/' rel='bookmark' title='Permanent Link: Google, Yahoo e Adobe uniti per indicizzare i siti in Flash'>Google, Yahoo e Adobe uniti per indicizzare i siti in Flash</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.webgriffe.com/webgriffe-speaker-al-flash-camp-on-the-beach-di-rimini/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Object Overloading</title>
		<link>http://blog.webgriffe.com/php-object-overloading/</link>
		<comments>http://blog.webgriffe.com/php-object-overloading/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 08:05:52 +0000</pubDate>
		<dc:creator>Manuele Menozzi</dc:creator>
				<category><![CDATA[Per chi fa Web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linguaggio a oggetti]]></category>
		<category><![CDATA[magic methods]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[overloading]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.webgriffe.com/?p=511</guid>
		<description><![CDATA[Come noto, il linguaggio PHP è una delle tecnologie lato server più utilizzate dagli sviluppatori web. I motivi di questa popolarità sono principalmente due: Fornisce un&#8217;API specifica per interagire con Apache, il web server più diffuso al mondo. Ha una sintassi molto simile al C. Uno dei linguaggi di programmazione che hanno fatto la storia [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-561" title="PHP" src="http://blog.webgriffe.com/wp-content/uploads/2009/06/php-150x150.jpg" alt="PHP" width="150" height="150" />Come noto, il linguaggio <strong>PHP</strong> è una delle tecnologie lato server più utilizzate dagli sviluppatori web. I motivi di questa popolarità sono principalmente due:</p>
<ul>
<li>Fornisce un&#8217;API specifica per interagire con <strong>Apache</strong>, il web server più diffuso al mondo.</li>
<li>Ha una sintassi molto simile al <strong>C</strong>. Uno dei linguaggi di programmazione che hanno fatto la storia dell&#8217;informatica.</li>
</ul>
<p>Dalla versione 5 <strong>PHP</strong> è stato arricchito di nuovi aspetti permettendo la nascita ed il consolidamento di numerosi framework. Tra le caratteristiche di questo linguaggio ce n&#8217;è una che mi affascina particolarmente ed è l&#8217;<strong>object overloading</strong>. Generalmente con il termine <em>overloading</em>, ci si riferisce a quella caratteristica di un linguaggio che permette di dichiare più metodi con la stessa firma ma con numero e/o tipi di parametri diversi. In <strong>PHP</strong>, invece, l&#8217;<strong>object overloading</strong> è la caratteristica che permette agli oggetti di una classe, <strong></strong>di interpretare chiamate a metodi o attributi che non sono stati definiti. Tutto ciò è possibile grazie ai cosiddetti &#8220;<strong>magic methods</strong>&#8221; che, una volta definiti, permetto di intercettare tutte le chiamate inconsistenti. Questi metodi sono:</p>
<ul>
<li><em>__get(string $name)</em>: viene chiamato quando si cerca di leggere il valore di un attributo che non è stato dichiarato.</li>
<li><em>__set(string $name, mixed $value)</em>: viene chiamato quando si cerca di scrivere il valore di un attributo che non è stato dichiarato.</li>
<li><em>__isset(string $name)</em>: viene chiamato quando si utilizzano i metodi <em>isset </em>o <em>empty</em> su un attributo che non è stato dichiarato.</li>
<li><em>__unset(string $name)</em>: viene chiamato quando si utilizza il metodo <em>unset</em> su un attributo che non è stato dichiarato.</li>
<li><em>__call(string $name, array $arguments)</em>: viene chiamato quando si chiama un metodo che non è stato definito.</li>
<li><em>__callStatic(string $name, array $arguments)</em>: come il metodo precedente ma per le chiamate statiche (ad esempio <em>NomeClasse::metodo()</em>).</li>
</ul>
<p>Utilizzando questi metodi è possibile creare classi i cui attributi e metodi sono dinamici. Ad esempio si consideri la seguente classe:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Test <span style="color: #009900;">&#123;</span>
  <span style="color: #009933; font-style: italic;">/**  Array dei dati overloaded  */</span>
  <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #009933; font-style: italic;">/**
   * L'overloading non viene usato su
   * questo attributo perchè è dichiarato.
   */</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$declared</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #009933; font-style: italic;">/**
   * Per questo attributo viene usato
   * l'overloading solo se si tenta di accedere
   * dall'esterno della classe.
   */</span>
  <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$hidden</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __set<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>data<span style="color: #009900;">&#91;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$value</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __get<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">array_key_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>data<span style="color: #009900;">&#91;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000088;">$trace</span> <span style="color: #339933;">=</span> <span style="color: #990000;">debug_backtrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">trigger_error</span><span style="color: #009900;">&#40;</span>
      <span style="color: #0000ff;">'Undefined property via __get(): '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">.</span>
      <span style="color: #0000ff;">' in '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$trace</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'file'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span>
      <span style="color: #0000ff;">' on line '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$trace</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'line'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
      <span style="color: #009900; font-weight: bold;">E_USER_NOTICE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __isset<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>data<span style="color: #009900;">&#91;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __unset<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>data<span style="color: #009900;">&#91;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ora immaginiamo che il nostro script PHP instanzi un oggetto della classe <em>Test</em> di cui sopra:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$obj</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Test<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * La prossima istruzione genererà una chiamata al metodo
 * __set definito in precedenza. I parametri $name e $value
 * assumeranno rispettivamente i valori 'attrOverloaded' e 'ciao mondo!'.
 * Il metodo __set quindi aggiungerà l'indice 'attrOverloaded'
 * all'array $data e ne associerà il valore 'ciao mondo!'
 */</span>
<span style="color: #000088;">$obj</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>attrOverloaded <span style="color: #339933;">=</span> <span style="color: #0000ff;">'ciao mondo!'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * La prossima istruzione genererà una chiamata al metodo
 * __get definitio in precedenza. Il parametro $name avrà
 * il valore 'attrOverloaded'. Il metodo restituirà il
 * rispettivo valore presente nell'array $data ovvero
 * 'ciao mondo!'
 */</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$obj</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>attrOverloaded<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * Per la prossima istruzione non verrà utilizzato
 * l'overloading in quando declared è un attributo
 * dichiarato dell'oggetto.
 */</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$obj</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>declared<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * Per la prossima istruzione verrà utilizzato
 * l'overloading in quanto hidden è un attributo
 * privato ma non essendo però definito nell'array
 * $data verrà lanciato l'errore.
 */</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$obj</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>hidden<span style="color: #339933;">;</span></pre></div></div>

<p>Se è chiaro come funziona potete divertirvi a prevedere l&#8217;output dello script (e magari postarlo nei commenti).</p>
<p>Uno svantaggio dell&#8217;utilizzo di questa tecnica è che l&#8217;esecuzione di questi metodi è 4 volte più lenta di un normale metodo di un oggetto. Inoltre, si perde la nozione di attributi privati o protetti.  La comodità di questi metodi però ne favorisce il suo utilizzo. Per citare un esempio pratico, si consideri che uno degli impieghi più frequenti di <strong>PHP,</strong> è quello di utilizzarlo per creare <em>model</em>. I <em>model</em> sono classi che modellano i dati di una qualsiasi entità che solitamente risiede su database. Ogni volta che si vuole modificare un&#8217;entità già esistente occorre anche aggiornare il <em>model</em> corrispondente.  Ancora, se si aggiunge una nuova entità su database ecco che occorre creare un apposito <em>model</em>. Utilizzando l&#8217;<strong>object overloading</strong>, invece, è possibile realizzare un <em>model</em> universale in grado di adattarsi a qualsiasi entità con qualsiasi attributo. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.webgriffe.com/php-object-overloading/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento &#8211; Open Source E-commerce</title>
		<link>http://blog.webgriffe.com/magento-open-source-ecommerce/</link>
		<comments>http://blog.webgriffe.com/magento-open-source-ecommerce/#comments</comments>
		<pubDate>Tue, 12 May 2009 12:55:30 +0000</pubDate>
		<dc:creator>Manuele Menozzi</dc:creator>
				<category><![CDATA[Per chi fa Web]]></category>
		<category><![CDATA[Tecnologie]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://blog.webgriffe.com/?p=333</guid>
		<description><![CDATA[Ultimamente, si è presentata l&#8217;occasione per studiare cosa offre oggi il mercato in merito a piattaforme eCommerce open source. Dopo aver testato e confrontato diverse soluzioni, la nostra scelta è caduta su Magento eCommerce (che già conoscevamo). Già dal sito web, questo software si presenta subito come qualcosa di altamente professionale. Ne esistono due versioni: [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.webgriffe.com/wp-content/uploads/2009/05/magento-logo.jpg"><img class="alignleft size-thumbnail wp-image-334" title="Magento eCommerce - Logo" src="http://blog.webgriffe.com/wp-content/uploads/2009/05/magento-logo-150x147.jpg" alt="magento-logo" width="150" height="147" /></a>Ultimamente, si è presentata l&#8217;occasione per studiare cosa offre oggi il mercato in merito a <strong>piattaforme eCommerce open source</strong>. Dopo aver testato e confrontato diverse soluzioni, la nostra scelta è caduta su <strong>Magento eCommerce</strong> (che già conoscevamo). Già dal <a title="Magento eCommerce" href="http://www.magentocommerce.com" target="_blank">sito web</a>, questo software si presenta subito come qualcosa di altamente professionale. Ne esistono due versioni: <strong>Magento Community</strong> e <strong>Magento Enterprise</strong>. La prima è gratuita mentre la seconda costa 8900 dollari all&#8217;anno. In ogni caso, entrambe sono <strong>open source</strong>.</p>
<p><strong>Magento</strong> è una piattaforma sviluppata in <strong>PHP</strong> (con <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend Framework</a>) e utilizza un database <strong>MySQL</strong> per l&#8217;archiviazione dei dati. È piuttosto esigente in merito a requisiti di sistema. Infatti, richiede alcune <strong>estensioni</strong> <strong>PHP</strong> che solitamente non sono installate sui normali <strong>servizi di hosting</strong>. Del resto, una volta caricato sul proprio <strong>webserver</strong> è sufficiente creare un database <strong>MySQL</strong> e far partire la procedura di installazione.</p>
<p>Entriamo nel <strong>pannello di amministrazione</strong> dove capiamo subito che <strong>Magento </strong>è una piattaforma estremamente potente. Anche la versione gratuita, possiede tutto quello che si può chiedere ad una software di eCommerce. Quelle che seguono sono solo alcune delle caratteristiche di Magento eCommerce:</p>
<ul>
<li>Strumenti promozionali e di marketing</li>
<li>Analisi e reportistica</li>
<li>Motore di ricerca</li>
<li>Gestione dei contenuti (CMS)</li>
<li>Gestione catalogo</li>
<li>Ottimizzazione per iPhone</li>
<li>Internazionalizzazione</li>
<li>Gestione ordini (pagamenti, spedizioni e fatturazione)</li>
<li>Gestione clienti</li>
</ul>
<p>L&#8217;elenco completo delle caratteriste lo si può trovare <a title="Caratteristiche Magento" href="http://www.magentocommerce.com/product/features" target="_blank">in questa pagina</a>.<br />
L&#8217;utilizzo del pannello di amministrazione non è semplicissimo ma dopo poco tempo, siamo in grado di effettuare le principali operazioni di gestione. <strong>Magento</strong> include anche la parte di <strong>frontend</strong> con un tema di default.</p>
<p><img class="alignright size-medium wp-image-379" title="Magento eCommerce - Frontend" src="http://blog.webgriffe.com/wp-content/uploads/2009/05/theme_usual-300x296.jpg" alt="theme_usual" width="210" height="207" />Il primo problema che ci poniamo è: come personalizziamo il <strong>frontend </strong>secondo le esigenze dei nostri clienti? Per rispondere a questa domanda cominciamo a documentarci sulla <a title="Designer's Guide" href="http://www.magentocommerce.com/design_guide" target="_blank">Designer&#8217;s Guide</a> che espone l&#8217;intricato sistema di template di <strong>Magento</strong>. Fin da subito ci accorgiamo che la documentazione non è delle migliori. Anche dopo diverse e attente letture alcuni concetti rimangono inspiegati. Quel che è peggio è che non riusciamo neppure a trovare qualcosa di significativo altrove. Anche su forum e blog i post si riferiscono a problemi specifici e non al funzionamento generale della piattaforma.</p>
<p>Ma non ci diamo per vinti, perché ad oggi <strong>Magento</strong> è forse la soluzione <strong>open source </strong>più completa, e quindi complessa, di cui si possa disporre. L&#8217;unica strada che ci sembra percorribile, è quella di applicare <a href="http://it.wikipedia.org/wiki/Reverse_engineering" target="_blank">reverse engineering</a> partendo dal frontend di default. In questo modo cominciamo a fare progressi e ogni giorno capiamo sempre meglio come affrontare certi tipi di personalizzazione.</p>
<p>Dopo diversi giorni trascorsi ad esaminare decine di classi e centinaia di post della <strong>community</strong> Magento, ora siamo in grado di adattare  il layout alle nostre esigenze. Inoltre, possiamo sviluppare nuovi moduli per aggiungere funzionalità personalizzate a questo software.</p>
<p>Attualmente <strong>Magento eCommerce</strong> ci sembra davvero un&#8217;ottima soluzione per iniziare un progetto di eCommerce. Come è ovvio, questo sistema introdurrebbe un certo numero di rigidità, ma le funzionalità offerte da <strong>Magento</strong> sono talmente numerose e talmente complete che pensiamo che anche i possibili utilizzatori finali si possano ritenere altamente soddisfatti. </p>


<p>Articoli correlati:</h2><ol><li><a href='http://blog.webgriffe.com/ecommerce-per-crescere/' rel='bookmark' title='Permanent Link: eCommerce per crescere'>eCommerce per crescere</a></li>
<li><a href='http://blog.webgriffe.com/william-rice-magento-beginners-guide/' rel='bookmark' title='Permanent Link: William Rice, Magento Beginner&#8217;s Guide'>William Rice, Magento Beginner&#8217;s Guide</a></li>
<li><a href='http://blog.webgriffe.com/boutique/' rel='bookmark' title='Permanent Link: Webgriffe® Boutique: l&#8217;E-commerce professionale'>Webgriffe® Boutique: l&#8217;E-commerce professionale</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.webgriffe.com/magento-open-source-ecommerce/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
