<?xml version="1.0" encoding="ISO-8859-1"?>
<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>Linux, PHP, MySQL, Windows, C# &#187; zend framework</title>
	<atom:link href="http://www.massimo-caselli.com/tag/zend-framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.massimo-caselli.com</link>
	<description>Articoli, news e pillole sul mondo LAMP e l&#039;opensource. Pillole di C#</description>
	<lastBuildDate>Mon, 30 Jan 2012 15:36:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Zend Framework e la sua (pessima) implementazione del pattern MVC</title>
		<link>http://www.massimo-caselli.com/2011/05/10/zend-framework-e-la-sua-pessima-implementazione-del-pattern-mvc/</link>
		<comments>http://www.massimo-caselli.com/2011/05/10/zend-framework-e-la-sua-pessima-implementazione-del-pattern-mvc/#comments</comments>
		<pubDate>Tue, 10 May 2011 15:37:30 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[zend framework mvc]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=288</guid>
		<description><![CDATA[Dopo aver sperimentato l&#8217;utilizzo di Zend Framework in piccoli progettini, dapprima come framework puro (tipo pear per intenderci) e in un paio di occasioni con l&#8217;utilizzo della sua gestione del pattern MVC, mi ero fatto l&#8217;idea che: Come framework in sé non sia per niente male L&#8217;implementazione dell&#8217;MVC fosse buona, non eccezionale ma buona Bene, [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo aver sperimentato l&#8217;utilizzo di Zend Framework in piccoli progettini, dapprima come framework puro (tipo pear per intenderci) e in un paio di occasioni con l&#8217;utilizzo della sua gestione del pattern MVC, mi ero fatto l&#8217;idea che:</p>
<ul>
<li>Come framework in sé non sia per niente male</li>
<li>L&#8217;implementazione dell&#8217;MVC fosse buona, non eccezionale ma buona</li>
</ul>
<p>Bene, sto lavorando da un paio di settimane su un progetto complesso e sto utilizzando <strong>Zend Framework nella sua piena implementazione dell&#8217;MVC</strong>.<br />
Per cominciare (ma questo lo avevo già deciso sulla base delle precedenti esperienze), ho preferito evitare l&#8217;utilizzo di Zend_DB e della modalità che suggerisce la Zend stessa nei suoi tutorial per la gestione del model.<br />
La motivazione era dovuta al fatto che non amavo la libreria in generale, ma soprattutto mi è sempre sembrato che la <strong>definizione del model richiedesse un overhead di sviluppo eccessivo</strong>.<br />
Morale, il model l&#8217;ho gestito con classi scritte da me direttamente e utilizzando il caro, vecchio e affidabile adodb.</p>
<p>Sono però rimasto esterrefatto dalla <strong>terribile applicazione del pattern MVC</strong> per le seguenti cose, <strong>in ordine di gravità</strong>:</p>
<ol>
<li><strong><em>Mischione logico tra View e Controller/BusinessLogic nella definizione delle form (Zend_Form)</em></strong></li>
<li><strong><em>Assenza di parametri nelle action</em></strong></li>
<li><strong><em>Action i quali nomi dei metodi devono essere tutti minuscoli, tutti attaccati e con alla fine &#8220;Action&#8221;</em></strong></li>
</ol>
<p><strong>Vado a spiegarmi meglio, per il punto 1:</strong><br />
La Zend suggerisce/propina l&#8217;utilizzo di Zend Form. Le Zend form di fatto definiscono i campi del form, le validazioni e via discorrendo. Fin qui direi tutto sommato abbastanza bene, è sufficiente definire una classe ApplicationForm che estenda Zend_Form. All&#8217;interno dell&#8217;init() si aggiungono tutti i vari elementi con le loro particolarità (ovviamente alcune cose specifiche possono essere inserite sia a livello di metodi aggiuntivi della classe che direttamente da controller).<br />
Peccato però che all&#8217;interno di questa definizione di campi, oltre a cose sensate come le validazioni, il required etc&#8230; sia necessario inserire label, id, classi css, ovvero tutti aspetti sostanzialmente relativi alla parte di view.<br />
Infatti da controller si istanzia la classe, tipo $form = new ApplicationForm(); e $form si passa alla view direttamente. La view non farà altro che renderizzare la form.<br />
Questo significa che se un grafico/htmlista deve modificare qualcosa NON lo può fare dalla view, ma deve chiedere (o fare direttamente) al programmatore di agire sulla classe ApplicationForm().</p>
<p>@Zend: ma la separazione dei livelli dove la lasciamo?</p>
<p>Al di là di aspetti puristici e filosofici, questo rappresenta UN PROBLEMA CONCRETO.</p>
<p><strong>Punto 2:</strong><br />
Il minimo che potevo aspettarmi (ovviamente lo avevo già notato anche in progetti più piccoli ma davo per scontato esistesse qualche variante per gestirlo) è che i metodi delle action potessero/dovessero essere parametrici.<br />
Invece niente, il metodo detailsAction() che vorrebbe molto probabilmente l&#8217;id da cui attingere i dati, non può essere detailsAction($id), ma $id va recuperato in get/post come si fa da 100 anni.<br />
Ho trovato qualche variante in giro di terze parti per avere i parametri nelle action ma a parte che non funzionavano benissimo, mi pare paradossale che un framework di X Mbyte non supporti i parametri nelle action della sua versione dell&#8217;MVC.</p>
<p><strong>Punto 3:</strong><br />
Se richiamo ad esempio: http://www.massimo-caselli.com/Article/GetArticleDetails sono costretto a nominare la action in: public function getarticledetailsAction().<br />
E&#8217; il minore dei mali, però insomma anche la leggebilità del codice non è che sia poi una cosa troppo secondaria.</p>
<p>Per farla comunque breve devo dire che in questo caso, <strong>Microsoft batte Zend nell&#8217;implementazione dell&#8217;MVC 10 a 0. <img src='http://www.massimo-caselli.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2011/05/10/zend-framework-e-la-sua-pessima-implementazione-del-pattern-mvc/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Transazioni con Zend Framework</title>
		<link>http://www.massimo-caselli.com/2009/03/26/transazioni-con-zend-framework/</link>
		<comments>http://www.massimo-caselli.com/2009/03/26/transazioni-con-zend-framework/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 19:31:40 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[MySQL, DB Server]]></category>
		<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[transazioni mysql]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=167</guid>
		<description><![CDATA[Recentemente avendo sviluppato nelle ore serali un progetto web ( www.animalhelp-spb.com ) per supportare e cercare di far trovare casa a cani e gatti randagi russi, ho deciso di realizzarlo iniziando a farmi le ossa con Zend Framework. Premetto che devo ancora dettagliare ed approfondire la conoscenza di questo strumento, in particolare nell&#8217;utilizzo secondo la [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente avendo sviluppato nelle ore serali un progetto web ( <a title="Animal help san pietroburgo" href="http://www.animalhelp-spb.com" target="_blank">www.animalhelp-spb.com</a> ) per supportare e cercare di far trovare casa a cani e gatti randagi russi, ho deciso di realizzarlo iniziando a farmi le ossa con <a title="Zend framework" href="http://framework.zend.com" target="_blank"><strong>Zend Framework</strong></a>.</p>
<p>Premetto che devo ancora dettagliare ed approfondire la conoscenza di questo strumento, in particolare nell&#8217;utilizzo secondo la logica <strong>MVC (model &#8211; viewer &#8211; controller)</strong>, però l&#8217;ho trovato molto interessante, in particolare per la <strong>gestione delle transazioni</strong>.</p>
<p>In sostanza prima di tutto istanzio la classe corretta parametrizzando gli accessi al database:</p>
<p>$dbparams = array(&#8216;host&#8217; =&gt; DB_HOST, &#8216;username&#8217; =&gt; DB_USER, &#8216;password&#8217; =&gt; DB_PWD, &#8216;dbname&#8217; =&gt; DB_NAME);<br />
$db = new Zend_Db_Adapter_Mysqli($dbparams);<br />
$db-&gt;setFetchMode(Zend_Db::FETCH_OBJ);</p>
<p>Successivamente apro la transazione:</p>
<p>$db-&gt;beginTransaction();<br />
try<br />
{<br />
&#8230;. query 1 &#8230;.<br />
&#8230;. query 2 &#8230;.</p>
<p>$db-&gt;commit();<br />
}<br />
catch (Exception $e)<br />
{<br />
$db-&gt;rollBack();<br />
&#8230;.<br />
}</p>
<p>In sostanza nel caso vi sia un errore all&#8217;interno della transazione viene automaticamente rollbackato secondo una modalità simile a quella usata da adodb &#8220;Smart Transaction&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2009/03/26/transazioni-con-zend-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

