<?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>La Case de l&#039;Oncle Tom &#187; cakephp</title>
	<atom:link href="http://case.oncle-tom.net/tag/cakephp/feed/" rel="self" type="application/rss+xml" />
	<link>http://case.oncle-tom.net</link>
	<description>Développement Web, bonnes pratiques et performances</description>
	<lastBuildDate>Sun, 25 Dec 2011 19:33:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="search"
           href="http://case.oncle-tom.net/opensearch"
           type="application/opensearchdescription+xml"
           title="Content Search" />		<item>
		<title>Livre blanc sur les frameworks PHP : présentation et explications</title>
		<link>http://case.oncle-tom.net/2008/livre-blanc-frameworks-php-presentation-et-explications/</link>
		<comments>http://case.oncle-tom.net/2008/livre-blanc-frameworks-php-presentation-et-explications/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 05:00:55 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[admin generator]]></category>
		<category><![CDATA[bonne pratique]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[clever age]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[entreprises]]></category>
		<category><![CDATA[ez components]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[livre blanc]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[scaffolding]]></category>
		<category><![CDATA[symfony]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=926</guid>
		<description><![CDATA[Il existe 4 phases dans la vie d&#8217;un développeur : celle où il aime tout créer lui-même celle où il aime utiliser un outil déjà tout prêt celle où il aime concevoir son outil avec d&#8217;autres outils tout prêt celle où il aime que les autres conçoivent pour lui (mais là il est patron ou [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><a href="http://www.clever-age.com/veille/publications/livres-blancs/livre-blanc-frameworks-php-pour-l-entreprise.html"><img class="aligncenter size-full wp-image-927" title="Couverture du livre blanc «Frameworks PHP pour l\'entreprise»" src="http://case.oncle-tom.net/images/2008/06/couverture-livre-blanc.png" alt="Couverture du livre blanc «Frameworks PHP pour l\'entreprise»" width="141" height="200" /></a></p>
<p>Il existe 4 phases dans la vie d&#8217;un développeur :</p>
<ol>
<li>celle où il aime <strong>tout créer</strong> lui-même</li>
<li>celle où il aime <strong>utiliser un outil</strong> déjà tout prêt</li>
<li>celle où il aime <strong>concevoir son outil</strong> avec d&#8217;autres outils tout prêt</li>
<li>celle où il aime que <strong>les autres conçoivent pour lui</strong> (mais là il est patron ou armé d&#8217;une horde de stagiaires <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )</li>
</ol>
<p>Les <em>frameworks</em> font partie de cette troisième catégorie. Ils existent dans à peu près tous les langages : <acronym title="Cascading Style Sheets">CSS</acronym>, <acronym title="Pre-Hypertext Processing">PHP</acronym>, JavaScript, Java, C#, Python, Ruby etc.<br />
Mon discours portera sur les frameworks <acronym title="Pre-Hypertext Processing">PHP</acronym>, parce que c&#8217;est mon langage de prédilection mais aussi parce qu&#8217;un <a href="http://www.clever-age.com/veille/publications/livres-blancs/livre-blanc-frameworks-php-pour-l-entreprise.html">livre blanc sur les frameworks <acronym title="Pre-Hypertext Processing">PHP</acronym> pour l&#8217;entreprise</a> est récemment sorti. Il parlera aussi bien aussi bien aux décisionnels qu&#8217;aux développeurs, à leur compte ou pour celui d&#8217;une entreprise.<br />
<span id="more-926"></span></p>
<h3>De l&#8217;intérêt d&#8217;utiliser un framework</h3>
<p>Un <em>framework</em> est littéralement ce que l&#8217;on peut appeler un socle logiciel : il propose des fonctionnalités de base et vous les utilisez pour concevoir votre propre application.</p>
<p>J&#8217;essaierai de faire court en énumérant une liste de quelques points à faire valoir dans l&#8217;utilisation d&#8217;un framework pour concevoir une application Web :</p>
<ul>
<li><strong>développement accéléré</strong></li>
<li><em>convention over configuration</em> : suivez les rails des conventions plutôt que de tout paramétrer</li>
<li><acronym title="Don't Repeat Yourself">DRY</acronym> : écrivez le code une fois et réutilisez-le pour éviter le copier-coller (sans parler des gains de maintenabilité)</li>
<li><strong>mutualisation du code</strong> : un même socle pour plusieurs applications</li>
<li>concentration du développement sur le <strong>code métier</strong></li>
<li>le framework vous décharge des tâches pénibles : sécurité, gestion des <acronym title="Uniform Resource Locator">URL</acronym>, gestion des permissions utilisateur, manipulation des bases de données, gestion du cache, accès aux fichiers etc.</li>
<li><strong>génération automatique</strong> d&#8217;interfaces (<em>admin generator</em>), de base de données (<em>ORM</em>), de modules/applications (<em>scaffolding</em>) etc.</li>
<li><strong>vecteur d&#8217;apprentissage</strong> individuel et collectif</li>
<li>bénéfices de tout le travail d&#8217;une communauté &#8230; et de celui que vous réinjecterez</li>
</ul>
<p><em>A contrario</em>, on pourra critiquer les frameworks pour leur plus forte consommation en ressources qu&#8217;un développement maison.<br />
Ce n&#8217;est évidemment pas une raison valable pour passer à côté d&#8217;autant plus qu&#8217;il existe de nombreuses solutions pour palier/réduire ce problème avec les gestionnaires de cache et les accélérateurs de code.</p>
<p style="text-align:center"><img class="aligncenter size-full wp-image-928" title="Exemple d'arborescence de projet symfony" src="http://case.oncle-tom.net/images/2008/06/exemple-application-symfony.png" alt="Exemple d'arborescence de projet symfony" width="344" height="474" /></p>
<h3>Framework <acronym title="Pre-Hypertext Processing">PHP</acronym> ou <acronym title="Content Management System">CMS</acronym> ?</h3>
<p>Maintenant vous me direz : <strong>pourquoi développer un logiciel avec un framework au lieu d&#8217;utiliser un bon <acronym title="Content Management System">CMS</acronym> des familles</strong> ou tout autre logiciel faisant son office ?<br />
Ce n&#8217;est à mon sens pas la bonne question à se poser : <strong>un framework n&#8217;est pas une fin en soi</strong>. Le choix du logiciel dépendra essentiellement du besoin, immédiat et futur. Vous aurez beau avoir le meilleur développeur d&#8217;un <acronym title="Content Management System">CMS</acronym> de votre pays, si le choix de la solution technique est déjà erroné, il ne suffira pas à éviter la catastrophe.</p>
<p>J&#8217;ai beaucoup accroché à cette formule le jour où je l&#8217;ai entendu : si vous estimez à au moins 50% l&#8217;utilisation de spécifiques dans une solution logicielle existante de type <acronym title="Content Management System">CMS</acronym>, vous faites fausse route. Le spécifique EST votre solution, le <acronym title="Content Management System">CMS</acronym> devient une simple fonctionnalité.<br />
Dans le cas d&#8217;un développement spécifique, le choix d&#8217;un framework est dans ce cas naturellement prescrit.</p>
<p>Dans tous les cas, <strong>ce sont vos besoins qui doivent vous guider vers le choix d&#8217;une solution</strong> et non l&#8217;inverse. Ne partez pas surtout d&#8217;une solution pour tenter d&#8217;y combler vos besoins.</p>
<h3>Les principaux frameworks <acronym title="Pre-Hypertext Processing">PHP</acronym></h3>
<p>Le <a href="http://www.clever-age.com/veille/publications/livres-blancs/livre-blanc-frameworks-php-pour-l-entreprise.html">livre blanc sur les frameworks <acronym title="Pre-Hypertext Processing">PHP</acronym></a> expose en détail les frameworks majeurs en <acronym title="Pre-Hypertext Processing">PHP</acronym> avec leurs avantages, inconvénients et surtout une <strong>grille comparative</strong> permettant de mettre à bout à bout leurs différentes fonctionnalités.</p>
<p>Toutefois on peut retenir ces noms de frameworks <acronym title="Pre-Hypertext Processing">PHP</acronym> :</p>
<ul>
<li><a href="http://cakephp.org/">CakePHP</a></li>
<li><a href="http://codeigniter.com/">CodeIgniter</a></li>
<li><a href="http://ez.no/fr/ezcomponents">EZ Components</a></li>
<li><a href="http://pear.php.net/">PEAR</a></li>
<li><a href="http://www.symfony-project.org/">symfony</a></li>
<li><a href="http://framework.zend.com/">Zend Framework</a></li>
</ul>
<p>On pourrait classer ces frameworks en 2 catégories :</p>
<ul>
<li>les <strong>briques logicielles</strong> : ils se présentent comme des briques indépendantes qu&#8217;on peut utiliser à souhait dans n&#8217;importe quel projet, y compris d&#8217;autres frameworks. C&#8217;est notamment le cas de <em>PEAR</em>, <em>EZ Components</em> et <em>Zend Framework</em> ;</li>
<li>les <strong>frameworks à proprement parler</strong> : ils imposent une structure particulière et des lignes directrices de développement pour être plus efficace. On citera dans ce cas <em>symfony</em>, <em>CodeIgniter</em> et <em>CakePHP</em></li>
</ul>
<h3>symfony : champion toutes catégories</h3>
<p style="text-align:center"><img class="size-full wp-image-929" title="Écran de première installation de symfony" src="http://case.oncle-tom.net/images/2008/06/symfony-first-install.gif" alt="Écran de première installation de symfony" /></p>
<p>Lors de la lecture du <a href="http://www.clever-age.com/veille/publications/livres-blancs/livre-blanc-frameworks-php-pour-l-entreprise.html">livre blanc sur les frameworks <acronym title="Pre-Hypertext Processing">PHP</acronym></a>, vous remarquerez très probablement que le framework <em>symfony</em> a tout pour plaire. C&#8217;est en effet à l&#8217;heure où j&#8217;écris ces lignes le framework <acronym title="Pre-Hypertext Processing">PHP</acronym> le plus abouti et le plus intéressant à analyser.<br />
Il jouit d&#8217;une excellente réputation, d&#8217;une incroyable stabilité et d&#8217;une communauté très active, quantitativement et qualitativement parlant. Si on ne devait en garder qu&#8217;un, ça serait lui.</p>
<p>Pourquoi j&#8217;apprécie énormément symfony :</p>
<ul>
<li>une documentation fonctionnelle <strong>et</strong> une documentation de l&#8217;<acronym title="Application Programming Interface">API</acronym> complètes</li>
<li>utilisation intensive de fichiers <acronym title="Yet Another Markup Language"><acronym title="Yet Another Markup Language">YAML</acronym></acronym> pour le paramétrage</li>
<li>les fonctionnalités d&#8217;<strong>amin generator</strong>, de gestion de base de données avec l&#8217;ORM <a href="http://propel.phpdb.org/">Propel</a> et les outils d&#8217;automatisation qui en découlent</li>
<li><strong>facilité d&#8217;intégration d&#8217;Ajax</strong> sans pondre une seule ligne de JavaScript</li>
<li>grand confort de développement</li>
<li>des conventions inspirées des plus grands (Ruby on Rails, Django etc.)</li>
</ul>
<h3>Conclusion</h3>
<p>Développeurs : <strong>renseignez-vous et intéressez-vous à au moins un framework</strong>. C&#8217;est bien pour le CV et vous gagnerez du temps.<br />
Décideurs : <strong>exigez de savoir quelle solution on vous préconise</strong> et surtout, pourquoi celle-là. À plus forte raison si votre projet comporte beaucoup de besoins spécifiques, demandez s&#8217;il s&#8217;agit d&#8217;un framework et si ce n&#8217;est pas le cas, pourquoi ça n&#8217;a pas été envisagé. Vous gagnerez aussi du temps et j&#8217;espère de l&#8217;argent.</p>
<p><strong>Les frameworks sont aujourd&#8217;hui partout</strong> et ont acquis une certaine maturité. Ces lettres de noblesse les rendent utilisables aussi bien pour des petits besoins que ceux d&#8217;entreprises, peu importe leur taille. Les gains de temps et l&#8217;incitation à la production de qualité sont des facteurs non-négligeables pour la pérennité de vos applications.<em></em></p>
<p><em>Attention</em> toutefois : un mauvais développeur et/ou une mauvaise conception prédomineront toujours. Votre fromage industriel aura toujours le même goût, peu importe la qualité du pain <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Je radote mais j&#8217;espère que vous trouverez suffisamment d&#8217;informations pour vous convaincre dans le <a href="http://www.clever-age.com/veille/publications/livres-blancs/livre-blanc-frameworks-php-pour-l-entreprise.html">livre blanc des frameworks <acronym title="Pre-Hypertext Processing">PHP</acronym> pour l&#8217;entreprise</a>. C&#8217;est ce genre de publications qui me font aimer la société dans laquelle je travaille <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/livre-blanc-frameworks-php-presentation-et-explications/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

