<?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>Etienne Lardy &#124; Concepteur web &#187; Développement</title>
	<atom:link href="http://www.etienne-lardy.com/categorie/developpement/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.etienne-lardy.com</link>
	<description>Etienne Lardy, concepteur web, spécialiste de l'ergonomie des sites web et du design</description>
	<lastBuildDate>Fri, 23 May 2008 20:54:27 +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>Dump-it.fr le service d&#8217;hébergement d&#8217;images qui fait son chemin</title>
		<link>http://www.etienne-lardy.com/design/dump-itfr-le-service-dhebergement-dimages-qui-fait-son-chemin/</link>
		<comments>http://www.etienne-lardy.com/design/dump-itfr-le-service-dhebergement-dimages-qui-fait-son-chemin/#comments</comments>
		<pubDate>Fri, 23 May 2008 20:52:29 +0000</pubDate>
		<dc:creator>Etienne</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[dump-it.fr]]></category>
		<category><![CDATA[hebergement]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[john]]></category>
		<category><![CDATA[wargan]]></category>

		<guid isPermaLink="false">http://www.etienne-lardy.com/?p=18</guid>
		<description><![CDATA[Cela fait maintenant un petit peu plus d&#8217;un an que nous avons ouvert le site d&#8217;hébergement d&#8217;images gratuit dump-it.fr.
J&#8217;ai eu l&#8217;occasion de travailler sur l&#8217;interface du service, que l&#8217;on voulait simple, intuitive et addictive avec John.
A croire que l&#8217;interface a été une réussite car j&#8217;ai reçu plusieurs demandes de redesign de services web en m&#8217;invoquant [...]]]></description>
			<content:encoded><![CDATA[<p>Cela fait maintenant un petit peu plus d&#8217;un an que nous avons ouvert le site d&#8217;hébergement d&#8217;images gratuit <a href="http://www.dump-it.fr/">dump-it.fr</a>.<br />
J&#8217;ai eu l&#8217;occasion de travailler sur l&#8217;interface du service, que l&#8217;on voulait simple, intuitive et addictive avec <a href="http://www.john-jean.com">John</a>.</p>
<p>A croire que l&#8217;interface a été une réussite car j&#8217;ai reçu plusieurs demandes de redesign de services web en m&#8217;invoquant la lisibilité de dump-it.</p>
<p>Alors en cas de besoin d&#8217;uploader une image, sans perte de qualité :<br />
<a href="http://www.dump-it.fr"><br />
<img src="http://www.dump-it.fr/upload/images/2d5f962ee0137f8e40b45e8c38f31070.gif" alt="http://www.dump-it.fr/" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.etienne-lardy.com/design/dump-itfr-le-service-dhebergement-dimages-qui-fait-son-chemin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PEAR, ou comment exploser votre productivité</title>
		<link>http://www.etienne-lardy.com/developpement/pear-ou-comment-exploser-votre-productivite/</link>
		<comments>http://www.etienne-lardy.com/developpement/pear-ou-comment-exploser-votre-productivite/#comments</comments>
		<pubDate>Fri, 08 Jun 2007 22:46:54 +0000</pubDate>
		<dc:creator>Etienne</dc:creator>
				<category><![CDATA[Développement]]></category>
<category>dataobject</category><category>developpement</category><category>formation</category><category>partage</category><category>pear</category>
		<guid isPermaLink="false">http://www.etienne-lardy.com/developpement/pear-ou-comment-exploser-votre-productivite/</guid>
		<description><![CDATA[C&#8217;est un constat sans appel : le développement PHP peut être conçu sans logique, on l&#8217;appelle alors code &#8217;spaghetti&#8217; , ou bien avec une certaine rigueur permettant ainsi une maintenabilité aisée du code.
Depuis que j&#8217;utilise PEAR, et plus spécialement le package DataObject j&#8217;ai gagné un net gain de productivité, de qualité de code.

Les gains flagrant [...]]]></description>
			<content:encoded><![CDATA[<p>C&#8217;est un constat sans appel : le développement PHP peut être conçu sans logique, on l&#8217;appelle alors code &#8217;spaghetti&#8217; , ou bien avec une certaine rigueur permettant ainsi une maintenabilité aisée du code.</p>
<p>Depuis que j&#8217;utilise PEAR, et plus spécialement le package <a href="http://www.etienne-lardy.com/developpement/generer-des-objets-pour-manipuler-efficacement-une-base-de-donnee-avec-peardataobject-1ere-partie/">DataObject</a> j&#8217;ai gagné un net gain de productivité, de qualité de code.<br />
<span id="more-11"></span><br />
Les gains flagrant en lisibilité :</p>
<ul>
<li>une page classique de code (CRUD) contenant l&#8217;interface (un système de template devient quasi inutile) fait environ <strong>60 lignes</strong></li>
<li>aucune requête SQL contraignante à lire (et donc, à comprendre) de plusieurs lignes</li>
<li>gain de sémantique pour un partage de code (j&#8217;expliquerais ce point un peu plus loin)</li>
<li>gestion quasi triviale des héritages entre tables</li>
</ul>
<h2>Prise en main de la librairie PEAR par un programmeur non spécialiste PHP</h2>
<p>J&#8217;ai eu à travailler avec un ami développeur qui n&#8217;est pas fan du PHP car il trouvait ce langage méli-mélo.<br />
Je lui ai donc montré comment je travaillais avec PEAR et particulièrement le package DataObject ainsi que FormBuilder.<br />
Il m&#8217;a confessé quelques heures plus tard que cette librairie donnait à PHP un sens une homogénéité, un plaisir à développer. Que cela renouait avec l&#8217;esprit &#8216;fun&#8217; du développement web.</p>
<p>J&#8217;ai été moi même surpris à quelle vitesse il a su s&#8217;adapter ainsi que créer des CRUD avancés d&#8217;une manière très aisée.</p>
<h2>Conclusion</h2>
<p>Il m&#8217;a été très bon d&#8217;avoir un avis externe au cercle des développeurs web quant à l&#8217;utilisation de PEAR ainsi que sa prise en main. Il en ressort que PEAR est très pratique, mais qu&#8217;une courte formation sur les points clés de son fonctionnement est nécessaire sous peine d&#8217;éplucher les forums des heures durant.</p>
<p>PEAR est donc un moyen &#8216;logique&#8217; de manipuler des données qui séduira des programmeurs de tout bords lorsqu&#8217;ils auront à travailler dans le web.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.etienne-lardy.com/developpement/pear-ou-comment-exploser-votre-productivite/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Utiliser les fonctionnalités avancées de DataObject et FormBuilder</title>
		<link>http://www.etienne-lardy.com/developpement/utiliser-les-fonctionnalites-avancees-de-dataobject-et-formbuilder/</link>
		<comments>http://www.etienne-lardy.com/developpement/utiliser-les-fonctionnalites-avancees-de-dataobject-et-formbuilder/#comments</comments>
		<pubDate>Sun, 13 May 2007 21:56:55 +0000</pubDate>
		<dc:creator>Etienne</dc:creator>
				<category><![CDATA[Développement]]></category>
<category>dataobject</category><category>formbuilder</category><category>pear</category>
		<guid isPermaLink="false">http://www.etienne-lardy.com/developpement/utiliser-les-fonctionnalites-avancees-de-dataobject-et-formbuilder/</guid>
		<description><![CDATA[Après avoir présenté rapidement comment générer des objets pratiques pour gérer vos tables et décrit la méthode pour en générer des formulaires, ils nous faut désormais regarder d&#8217;un peu plus près comment affiner notre code.
Voyons quelques unes des fonctionnalités avancées des librairies PEAR::DB_DataObject ainsi que PEAR::DB_DataObject_FormBuilder.

Jetons tout d&#8217;abord un coup d&#8217;oeil à notre fichier Utilisateurs.php [...]]]></description>
			<content:encoded><![CDATA[<p>Après avoir présenté rapidement comment générer des objets pratiques pour gérer vos tables et décrit la méthode pour en générer des formulaires, ils nous faut désormais regarder d&#8217;un peu plus près comment affiner notre code.</p>
<p>Voyons quelques unes des fonctionnalités avancées des librairies PEAR::DB_DataObject ainsi que PEAR::DB_DataObject_FormBuilder.<br />
<span id="more-7"></span><br />
Jetons tout d&#8217;abord un coup d&#8217;oeil à notre fichier Utilisateurs.php :</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI"> * Table Definition for utilisateurs</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI"> */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">require_once</span> <span class="st0">&#8216;DB/DataObject.php&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Utilisateurs extends DB_DataObject </div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co2">###START_AUTOCODE</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="coMULTI">/* the code below is auto generated do not remove the above tag */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; public <span class="re0">$__table</span> = <span class="st0">&#8216;utilisateurs&#8217;</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// table name</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; public <span class="re0">$ID_USER</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// int(11)&nbsp; not_null primary_key auto_increment</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; public <span class="re0">$NOM</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// string(100)&nbsp; not_null</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; public <span class="re0">$PRENOM</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// string(50)&nbsp; not_null</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; public <span class="re0">$MAIL</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// string(100)&nbsp; not_null</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; public <span class="re0">$BACTIF</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// int(1)&nbsp; </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="coMULTI">/* Static get */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> staticGet<span class="br0">&#40;</span><span class="re0">$k</span>,<span class="re0">$v</span>=<span class="kw2">NULL</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">return</span> DB_DataObject::<span class="me2">staticGet</span><span class="br0">&#40;</span><span class="st0">&#8216;Utilisateurs&#8217;</span>,<span class="re0">$k</span>,<span class="re0">$v</span><span class="br0">&#41;</span>; <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="coMULTI">/* the code above is auto generated do not remove the tag below */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co2">###END_AUTOCODE</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>
</div>
<p>Tout d&#8217;abord, premier point : comme décrit dans les commentaires, ne tentez pas de modifier ces lignes-ci, ce sont celles qui sont générées automatiquement par notre fichier createTables.php.</p>
<h2>1.Les règles</h2>
<p>Les règles permettent de gérer le type de contenu pouvant être soumis par l&#8217;utilisateur dans un formulaire.<br />
Voyons maintenant comment appliquer une règle sur notre champs email.</p>
<p>Ajoutons apres le <strong>END_AUTOCODE<br />
</strong> une fonction :</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> postGenerateForm<span class="br0">&#40;</span>&amp;<span class="re0">$form</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$form</span>-&gt;<span class="me1">addRule</span><span class="br0">&#40;</span><span class="st0">&#8216;MAIL&#8217;</span>, <span class="st0">&#8216;Le mail doit être valide&#8217;</span>, <span class="st0">&#8216;email&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> </div>
</li>
</ol>
</div>
</div>
<p>Simple non? Décrivons cette ligne de code:<br />
la fonction postGenerateForm est la fonction qui sera exécuté comme son nom l&#8217;indique apres la génération du formulaire. Elle prend en paramètre un pointeur sur l&#8217;objet formulaire (qui est je rappelle un HTML_QuickForm ).<br />
Le premier paramètre correspond au champs du DataObject ici, <strong>MAIL</strong>, ensuite, le seconde paramètre correspond au message qui sera affiché en cas de probleme, et le troisième correspond à la règle proprement dite.<br />
Vous pouvez y insérer une expression réguliere, ici, lorsque l&#8217;on précise &#8216;email&#8217; le test sera automatique.</p>
<p><a href="http://pear.php.net/manual/en/package.html.html-quickform.intro-validation.php">Pour plus d&#8217;informations sur les règles et les filtres visitez le site de PEAR.</a></p>
<h2>2.Executions d&#8217;actions lors de delete insert update</h2>
<p>Notre objet Utilisateurs qui est comme vous aurez remarqué une classe héritant de la classe DataObjects, vous pouvez surcharger les fonctions update(), insert() et delete().</p>
<p>Cette surcharge est très utile par exemple si l&#8217;on a besoin d&#8217;effacer un fichier lors d&#8217;une destruction d&#8217;une entrée dans la table. </p>
<p>Exemple de traitement de fichier :</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> delete<span class="br0">&#40;</span><span class="br0">&#41;</span></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="kw1">if</span><span class="br0">&#40;</span> <span class="re0">$this</span>-&gt;<span class="me1">LIEN_AVATAR</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.php.net/unlink"><span class="kw3">unlink</span></a> <span class="br0">&#40;</span> <span class="re0">$this</span>-&gt;<span class="me1">LIEN_AVATAR</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; <span class="kw1">return</span> parent::<span class="me2">delete</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> </div>
</li>
</ol>
</div>
</div>
<h2>3.La fonction preProcessForm</h2>
<p>Si vous avez besoin d&#8217;effectuer un traitement sur le formulaire avant qu&#8217;il soit affiché, c&#8217;est ici qu&#8217;on bosse !</p>
<p>Par exemple si nous avons un booléen au nom de BACTIF dans notre base, qui correspondrait à l&#8217;état d&#8217;activation d&#8217;un compte user.<br />
Afin de représenter ce booléen, j&#8217;ai choisi d&#8217;utiliser une checkbox.<br />
Voici le code de ma fonction :</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> preProcessForm<span class="br0">&#40;</span>&amp;<span class="re0">$data</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="re0">$this</span>-&gt;<span class="me1">fb_preDefElements</span><span class="br0">&#91;</span><span class="st0">&#8216;BACTIF&#8217;</span><span class="br0">&#93;</span> =&nbsp; HTML_QuickForm::<span class="me2">createElement</span><span class="br0">&#40;</span><span class="st0">&#8216;checkbox&#8217;</span>, <span class="st0">&#8216;BACTIF&#8217;</span>, <span class="st0">&#8216;Activé :&#8217;</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; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$data</span><span class="br0">&#91;</span><span class="st0">&#8216;BACTIF&#8217;</span><span class="br0">&#93;</span> != <span class="nu0">0</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="re0">$this</span>-&gt;<span class="me1">fb_preDefElements</span><span class="br0">&#91;</span><span class="st0">&#8216;BACTIF&#8217;</span><span class="br0">&#93;</span>-&gt;<span class="me1">setChecked</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">fb_preDefElements</span><span class="br0">&#91;</span><span class="st0">&#8216;BACTIF&#8217;</span><span class="br0">&#93;</span>-&gt;<span class="me1">setChecked</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span> </div>
</li>
</ol>
</div>
</div>
<p>Il est à noter que pour cette fonction le paramètre est un Array.</p>
<h2>4. Afficher / cacher certains champs du forum</h2>
<p>Il peut être utile voire indispensable de pouvoir cacher ou interdire à l&#8217;édition certains champs de votre table. Pour ceci nous disposons de deux variables de type Array : <strong>$fb_fieldsToRender</strong> et <strong>$fb_userEditableFields</strong></p>
<p>Comme leurs noms l&#8217;indiquent, la première contient les champs à donner au Renderer ( donc les champs à afficher ) et la seconde contient les champs que l&#8217;utilisateur aura le droit de modifier.</p>
<p>A noter que dans son extrême lucidité, notre formulaire n&#8217;affichera jamais (encore moins n&#8217;autorise à éditer) le champs servant de clé primaire.</p>
<p>Exemple d&#8217;utilisation :</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re0">$fb_fieldsToRender</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;NOM&#8217;</span>,<span class="st0">&#8216;PRENOM&#8217;</span>,<span class="st0">&#8216;MAIL&#8217;</span><span class="br0">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
<h2>5. Modifications des labels du formulaire</h2>
<p>Avoir un formulaire affichant froidement une alternance de labels et champs tout droits décendus de la table n&#8217;est pas génial.<br />
Pour rendre notre affaire réellement géniale nous allons modifier une variable au doux nom de <strong>$fb_fieldLabels</strong></p>
<p>Voici un exemple d&#8217;utilisation :</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re0">$fb_fieldLabels</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;BACTIF&#8217;</span> =&gt; <span class="st0">&#8216;Activer&#8217;</span>,<span class="st0">&#8216;NOM&#8217;</span>=&gt;<span class="st0">&#8216;Entrez votre nom :&#8217;</span><span class="br0">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
<h2>6.Conclusion</h2>
<p>Ce quatrième article vient clore cet aperçu rapide du gain de temps et de productivité permis par la librairie PEAR.</p>
<p>Je vous invite à aller visiter les sites traitant du sujet :</p>
<ul>
<li><a href="http://pear.php.net/">PEAR</a></li>
<li><a href="http://pear.reversefold.com/dokuwiki/doku.php?id=pear:db_dataobject_formbuilder">Documentation de FormBuilder</a></li>
<li><a href="http://opensource.21st.de/static/formbuilder/rapidprototyping-kr.pdf">un slide en anglais présentant le prototypage rapide grâce à DataObject et FormBuilder</a></li>
<li><a href="http://pear.php.net/manual/en/package.database.db-dataobject.php">Package DataObject</a></li>
<li><a href="http://pear.php.net/package/HTML_QuickForm">Package HTML_QuickForm</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.etienne-lardy.com/developpement/utiliser-les-fonctionnalites-avancees-de-dataobject-et-formbuilder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Créer facilement des formulaires pour vos objets avec FormBuilder</title>
		<link>http://www.etienne-lardy.com/developpement/creer-facilement-des-formulaires-pour-vos-objets-avec-formbuilder/</link>
		<comments>http://www.etienne-lardy.com/developpement/creer-facilement-des-formulaires-pour-vos-objets-avec-formbuilder/#comments</comments>
		<pubDate>Fri, 11 May 2007 17:46:21 +0000</pubDate>
		<dc:creator>Etienne</dc:creator>
				<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://www.etienne-lardy.com/design/creer-facilement-des-formulaires-pour-vos-objets-avec-formbuilder/</guid>
		<description><![CDATA[Nous avons vu dans les deux derniers articles comment générer des objets permettant d&#8217;utiliser efficacement notre base de donnée.
Voyons désormais le package PEAR::DB_DataObject_FormBuilder qui permet de créer automatiquement des formulaires depuis nos objets précédemment générés.

Reprenons là ou nous nous étions arrétés dans le dernier article.
Nous possédons un objet utilisateurs que nous avions créé avec peu [...]]]></description>
			<content:encoded><![CDATA[<p>Nous avons vu dans les deux derniers articles comment générer des objets permettant d&#8217;utiliser efficacement notre base de donnée.</p>
<p>Voyons désormais le package <strong>PEAR::DB_DataObject_FormBuilder</strong> qui permet de créer automatiquement des formulaires depuis nos objets précédemment générés.<br />
<span id="more-6"></span></p>
<p>Reprenons là ou nous nous étions arrétés dans le <a href="http://www.etienne-lardy.com/developpement/peardataobject-generer-des-objets-depuis-une-bdd-2eme-partie/#more-5">dernier article</a>.</p>
<p>Nous possédons un objet <strong>utilisateurs</strong> que nous avions créé avec peu d&#8217;efforts. Je vais maintenant vous exposer comment créer automatiquement un formulaire de traitement pour cet objet.</p>
<p>Tout d&#8217;abord vous devrez installer le package <strong>PEAR::DB_DataObject_FormBuilder</strong> disponible sur le site de <a href="http://pear.php.net">PEAR</a>, ou, via l&#8217;installeur ligne de commande :</p>
<p><strong>pear install DB_DataObject_FormBuilder</strong></p>
<p>Une fois le package installé nous pouvons passer à l&#8217;utilisation du générateur de formulaire.</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Chargement des librairies</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">require_once</span> “DB/DataObject.php”;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">require_once</span> “DB/DataObject/FormBuilder.php”;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Chargement de la configuration de l’objet</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">require_once</span> “utilisateurs.config.php”;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Fixons le niveau de debug de 0 à 5</span></div>
</li>
<li class="li1">
<div class="de1">DB_DataObject::<span class="me2">debugLevel</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//Génération de l’objet</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$utilisateurs</span> = &amp; DB_DataObject::<span class="me2">factory</span><span class="br0">&#40;</span>‘utilisateurs ‘<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Génération du formulaire, ce formulaire est un HTML::QuickForm (cf documentaion sur pear.php.net)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$builder</span> = &amp; DB_DataObject_FormBuilder::<span class="me2">create</span><span class="br0">&#40;</span><span class="re0">$utilisateurs</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$form</span> =&amp; <span class="re0">$builder</span>-&gt;<span class="me1">getForm</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Il ne reste plus qu&#8217;a affiche ce formulaire</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$form</span>-&gt;<span class="me1">display</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// une fois formulaire validé</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$form</span>-&gt;<span class="me1">validate</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="li1">
<div class="de1"><span class="co1">// nous procédons aux insert / update </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$form</span>-&gt;<span class="me1">process</span><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span>&amp;<span class="re0">$builder</span>,<span class="st0">&#8216;processForm&#8217;</span><span class="br0">&#41;</span>,<span class="kw2">false</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; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&laquo;&nbsp;&lt;p class=&#8217;alert&#8217;&gt;L&#8217;utilisateur $utilisateur-&gt;NOM à été créé/modifié avec succès.&lt;/p&gt;&nbsp;&raquo;</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>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw2">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
<p>Et hop, un formulaire tout beau, prêt à insérer des données dans notre base d&#8217;utilisateurs !</p>
<p>Si vous voulez éditer un enregistrement, rien n&#8217;est plus simple, il vous suffit de modifier :</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#91;</span>&#8230;<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//Génération de l’objet</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$utilisateurs</span> = &amp; DB_DataObject::<span class="me2">factory</span><span class="br0">&#40;</span>‘utilisateurs ‘<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//Sélection de l&#8217;utilisateur ayant l&#8217;id = 1</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$utilisateur</span>-&gt;<span class="me1">get</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Génération du formulaire, ce formulaire est un HTML::QuickForm (cf documentaion sur pear.php.net)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$builder</span> = &amp; DB_DataObject_FormBuilder::<span class="me2">create</span><span class="br0">&#40;</span><span class="re0">$utilisateurs</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$form</span> =&amp; <span class="re0">$builder</span>-&gt;<span class="me1">getForm</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Il ne reste plus qu&#8217;a affiche ce formulaire</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$form</span>-&gt;<span class="me1">display</span><span class="br0">&#40;</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; <span class="br0">&#91;</span>&#8230;<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw2">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
<p>Dans le prochain article, j&#8217;approfondirais l&#8217;exemple d&#8217;utilisation des formulaires et des objets DataObject, en détaillant comment ne pas afficher un champs, appliquer des règles, et encore comment appliquer des traitements spéciaux aux données ( par exemple un MD5 sur un password)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.etienne-lardy.com/developpement/creer-facilement-des-formulaires-pour-vos-objets-avec-formbuilder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PEAR::DataObject , générer des objets depuis une BDD &#8211; 2ème partie</title>
		<link>http://www.etienne-lardy.com/developpement/peardataobject-generer-des-objets-depuis-une-bdd-2eme-partie/</link>
		<comments>http://www.etienne-lardy.com/developpement/peardataobject-generer-des-objets-depuis-une-bdd-2eme-partie/#comments</comments>
		<pubDate>Tue, 08 May 2007 10:30:14 +0000</pubDate>
		<dc:creator>Etienne</dc:creator>
				<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://www.etienne-lardy.com/design/peardataobject-generer-des-objets-depuis-une-bdd-2eme-partie/</guid>
		<description><![CDATA[Vous venez de générez vos premiers objets avec DataObject ?  
Votre dossier dataobjects/ est plein d&#8217;objets frémissants, prêts à être torturés ?
Dans cette partie nous allons voir comment utiliser simplement ces objets afin de manipuler nos tables en BDD.

Charger le contexte
Afin d&#8217;utiliser ces objets php, nous nous devons de leur fournir le contexte, autrement [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.etienne-lardy.com/developpement/generer-des-objets-pour-manipuler-efficacement-une-base-de-donnee-avec-peardataobject-1ere-partie/">Vous venez de générez vos premiers objets avec DataObject ? </a> </p>
<p>Votre dossier dataobjects/ est plein d&#8217;objets frémissants, prêts à être torturés ?</p>
<p>Dans cette partie nous allons voir comment utiliser simplement ces objets afin de manipuler nos tables en BDD.<br />
<span id="more-5"></span></p>
<h2>Charger le contexte</h2>
<p>Afin d&#8217;utiliser ces objets php, nous nous devons de leur fournir le contexte, autrement dit, de les configurer.<br />
Par exemple prenons une table <strong>Utilisateurs</strong>, ayant comme champs<strong> id,nom,prenom</strong>.<br />
Lors de la génération de l&#8217;objet, un fichier a été créé: <strong>dataobjects/Utilisateurs.php</strong>, nous allons donc créer à notre tour le fichier de configuration pour cet objet. Pour le moment plaçons le à la racine du site.</p>
<p><strong>utilisateurs.config.php</strong></p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Si la version de php ne supporte pas l&#8217;overloading</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/define"><span class="kw3">define</span></a><span class="br0">&#40;</span> <span class="st0">&laquo;&nbsp;DB_DATAOBJECT_NO_OVERLOAD&nbsp;&raquo;</span>, <span class="kw2">TRUE</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">require_once</span><span class="br0">&#40;</span><span class="st0">&#8216;dataobjects/Utilisateurs.php&#8217;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Parse le fichier de configuration</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$config</span> = <a href="http://www.php.net/parse_ini_file"><span class="kw3">parse_ini_file</span></a><span class="br0">&#40;</span> <span class="st0">&#8216;db_dataobjects.ini&#8217;</span>, <span class="kw2">TRUE</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">foreach</span><span class="br0">&#40;</span> <span class="re0">$config</span> <span class="kw1">as</span> <span class="re0">$class</span> =&gt; <span class="re0">$values</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$options</span> = &amp;PEAR::<span class="me2">getStaticProperty</span><span class="br0">&#40;</span> <span class="re0">$class</span>, <span class="st0">&#8216;options&#8217;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$options</span> = <span class="re0">$values</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
<p>Vous aurez compris que ce fichier de configuration permettra à l&#8217;objet créé d&#8217;obtenir tous les paramètres spécifiés dans le db_dataobjects.ini.</p>
<h2>Créez et utilisez vos objets</h2>
<p>Le chemin n&#8217;a pas été trop long? Nous y sommes ! A deux pas de l&#8217;arrivée.<br />
Nous allons créer un objet prêt à être utilisé pour gérer notre base de donnée.</p>
<p>Créons à la racine du site ce fichier : index.php</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Chargement de la librairie</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">require_once</span> <span class="st0">&laquo;&nbsp;DB/DataObject.php&nbsp;&raquo;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Chargement de la configuration de l&#8217;objet</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">require_once</span> <span class="st0">&laquo;&nbsp;utilisateurs.config.php&nbsp;&raquo;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Fixons le niveau de debug de 0 à 5</span></div>
</li>
<li class="li1">
<div class="de1">DB_DataObject::<span class="me2">debugLevel</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//Génération de l&#8217;objet</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$utilisateurs</span> = &amp; DB_DataObject::<span class="me2">factory</span><span class="br0">&#40;</span><span class="st0">&#8216;utilisateurs &#8216;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//Affichez les noms contenus dans table</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$utilisateurs</span>-&gt;<span class="me1">find</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">while</span><span class="br0">&#40;</span> <span class="re0">$utilisateurs</span>-&gt;<span class="me1">fetch</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&laquo;&nbsp;$utilisateurs-&gt;nom &lt;br /&gt;&nbsp;&raquo;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
<p>Comme vous avez pu le constater, c&#8217;est relativement trivial.</p>
<p>Le prochain article portera sur l&#8217;utilisation approfondie des objets DataObjects.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.etienne-lardy.com/developpement/peardataobject-generer-des-objets-depuis-une-bdd-2eme-partie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PEAR::DataObject , générer des objets depuis une BDD &#8211; 1ère partie</title>
		<link>http://www.etienne-lardy.com/developpement/generer-des-objets-pour-manipuler-efficacement-une-base-de-donnee-avec-peardataobject-1ere-partie/</link>
		<comments>http://www.etienne-lardy.com/developpement/generer-des-objets-pour-manipuler-efficacement-une-base-de-donnee-avec-peardataobject-1ere-partie/#comments</comments>
		<pubDate>Mon, 07 May 2007 19:06:34 +0000</pubDate>
		<dc:creator>Etienne</dc:creator>
				<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://www.etienne-lardy.com/developpement/generer-des-objets-pour-manipuler-efficacement-une-base-de-donnee-avec-peardataobject-1ere-partie/</guid>
		<description><![CDATA[Vous cherchez à gérer une base de donnée efficacement ?
Vous êtes lassés de vous creuser la cervelle sur vos requêtes SQL?
Vous trouvez trop long les temps de développement Web?
Et bien figurez vous que moi aussi !
Les techniques les plus à la mode pour le développement rapide sont les framework comme Ruby On Rails, CakePHP, Symphony, [...]]]></description>
			<content:encoded><![CDATA[<p>Vous cherchez à gérer une base de donnée efficacement ?<br />
Vous êtes lassés de vous creuser la cervelle sur vos requêtes SQL?<br />
Vous trouvez trop long les temps de développement Web?</p>
<p>Et bien figurez vous que moi aussi !</p>
<p>Les techniques les plus à la mode pour le développement rapide sont les framework comme <strong>Ruby On Rails</strong>, <strong>CakePHP</strong>, <strong>Symphony</strong>, et j&#8217;en passe&#8230;<br />
Cependant ces frameworks sont relativement longs à l&#8217;apprentissage (surtout si vous choisissez ROR), et il peut vous sembler utile de n&#8217;utiliser qu&#8217;une librairie.<br />
Qui dit librairie en PHP, dit <strong>ZendFramework </strong>ou <strong>PEAR</strong>, mon choix s&#8217;est porté sur PEAR.</p>
<p>Voici donc en plusieurs parties comment utiliser les bases de données, créer des applications rapidement en PHP avec <strong>PEAR::DataObject</strong>.<br />
<span id="more-4"></span></p>
<h2>1. DataObject kézako?</h2>
<p>Le module DataObject de la librairie PEAR permet de générer des objets grâce à la récupération de la structure d&#8217;une table.<br />
Il vous faut dans un premier temps, installer la librairie PEAR (qui est généralement installée d&#8217;office avec PHP), puis d&#8217;installer le module DataObject en entrant dans un shell :<br />
<strong>pear install DB_DataObject</strong><br />
Une fois les fichiers récupérés, nous pouvons nous attaquer à la création de nos objets!</p>
<h2>2. Configurer </h2>
<p>Jetons un oeil sur ce qu&#8217;a installé notre commande, dans notre dossier PEAR.</p>
<p>Nous avons plusieurs scripts, Generator.php, createTables.php, error.php etc..<br />
Ici, le script qui nous intéresse est createTables.php.</p>
<p>Ma méthode (peu orthodoxe) conciste à copier ce fichier et à le déplacer dans le dossier public_html qui contiendra les sources de mon futur site (ou dossier www d&#8217;un serveur wamp sous windows).<br />
Ce fichier est destiné à être appellé en ligne de commande (php createTables.php bla bla bla), cependant  j&#8217;ai trouvé que cette utilisation n&#8217;était pas la plus pratique à la longue, lorsque vous devez générer régulièrement des DataObjects.</p>
<p>Nous devons ensuite créer un fichier de configuration, que j&#8217;appelle db_dataobjects.ini, voici celui que je vous montre en exemple :</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="re0"><span class="br0">&#91;</span>DB_DataObject<span class="br0">&#93;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">database </span>=<span class="re2"> mysql://root:@localhost/NomDeVotreBDD</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">schema_location </span>=<span class="re2"> dataobjects/schema</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">class_location </span>=<span class="re2"> dataobjects/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">extends_location </span>=<span class="re2"> DataObject.php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">require_prefix&nbsp; </span>=<span class="re2"> dataobjects/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">class_prefix&nbsp; &nbsp; </span>= </div>
</li>
<li class="li1">
<div class="de1"><span class="re1">debug </span>=<span class="re2"> <span class="nu0">0</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">proxy </span>=<span class="re2"> full</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">extends_location </span>=<span class="re2"> DB/DataObject.php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">extends </span>=<span class="re2"> DB_DataObject</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0"><span class="br0">&#91;</span>DB_DataObject_FormBuilder<span class="br0">&#93;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">linkDisplayLevel </span>=<span class="re2"> <span class="nu0">2</span> </span></div>
</li>
</ol>
</div>
</div>
<p>Hop une fois ce fichier sauvegardé il ne vous manque plus que d&#8217;entrer en ligne de commande:<br />
<strong>php createTables.php db_dataobjects.ini</strong><br />
ou bien d&#8217;insérer cette ligne au début de votre createTables.php que vous avez déplacé:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#8216;argv&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> = <span class="st0">&laquo;&nbsp;/chemin/vers/votre/db_dataobject.php&nbsp;&raquo;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
<p>Exécutez votre script : http://localhost/projet_pear/createTables.php</p>
<p>Tadaaaaaaaaaa, c&#8217;est tout.</p>
<p>Si tout s&#8217;est bien passé vous aurez obtenu un dossier dataobject contenant les structures de vos objets pour gérer vos tables etc&#8230;</p>
<p>Je vous écris la suite rapidement, promis.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.etienne-lardy.com/developpement/generer-des-objets-pour-manipuler-efficacement-une-base-de-donnee-avec-peardataobject-1ere-partie/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
