<?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>Ifnot</title>
	<atom:link href="http://www.ifnot.fr/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ifnot.fr</link>
	<description>Partage de ressources sur le développement web (PHP, Javascript, Graphisme, Référencement, etc...)</description>
	<lastBuildDate>Fri, 02 Sep 2011 07:27:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Retour du blog Ifnot</title>
		<link>http://www.ifnot.fr/retour-du-blog-ifnot.html</link>
		<comments>http://www.ifnot.fr/retour-du-blog-ifnot.html#comments</comments>
		<pubDate>Fri, 05 Nov 2010 19:26:23 +0000</pubDate>
		<dc:creator>Anael Favre</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.ifnot.fr/?p=652</guid>
		<description><![CDATA[Comme vous avez pu le constater, Ifnot est inaccessible depuis un petit moment. En effet j&#8217;ai eu quelques soucis d’hébergement et le temps me manquait pour tout remettre en place. J&#8217;ai donc pu remettre le site en fonction aujourd&#8217;hui pour ceux qui souhaiterait continuer a lire les articles déjà postés. Pour ce qui est de la suite, je ne [...]]]></description>
			<content:encoded><![CDATA[<ul id="sommaire"></ul><p><a href="http://www.ifnot.fr/wp-content/uploads/2010/11/Capture.png"><img class="alignleft size-medium wp-image-653" title="Ifnot" src="http://www.ifnot.fr/wp-content/uploads/2010/11/Capture-300x160.png" alt="" width="300" height="160" /></a>Comme vous avez pu le constater, Ifnot est inaccessible depuis un petit moment. En effet j&#8217;ai eu quelques soucis d’hébergement et le temps me manquait pour tout remettre en place.</p>
<p>J&#8217;ai donc pu remettre le site en fonction aujourd&#8217;hui pour ceux qui souhaiterait continuer a lire les articles déjà postés. Pour ce qui est de la suite, je ne pense pas que je pourrai poster de nouveaux articles aussi régulièrement qu&#8217;avant, je vous conseille donc de me suivre sur twitter / facebook / par rss pour être informé de mes nouveaux articles !</p>
<p>Bonne continuation à vous tous !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ifnot.fr/retour-du-blog-ifnot.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(Humour) Actualité &#8211; Apple et le problème de réception de signal de l&#8217;iPhone 4</title>
		<link>http://www.ifnot.fr/humour-actualite-apple-et-le-probleme-de-reception-de-signal-de-liphone-4.html</link>
		<comments>http://www.ifnot.fr/humour-actualite-apple-et-le-probleme-de-reception-de-signal-de-liphone-4.html#comments</comments>
		<pubDate>Thu, 02 Sep 2010 14:24:03 +0000</pubDate>
		<dc:creator>Titi</dc:creator>
				<category><![CDATA[Humour]]></category>

		<guid isPermaLink="false">http://www.ifnot.fr/?p=545</guid>
		<description><![CDATA[&#171;&#160;Allo ? La réception ? Je n&#8217;ai pas tout capté !&#160;&#187;Restons &#171;&#160;terre à terre&#160;&#187;&#8230;La concurrence en a gros sur la pomme&#8230;&#171;&#160;Il n&#8217;y a pas de problème ; il n&#8217;y a que des solutions.&#160;&#187; (André GIDE)Il ne reste plus qu&#8217;à se tenir &#171;&#160;au courant&#160;&#187; &#8230;Bonjour à tous ! Dans cette section, je vous propose un petit moment [...]]]></description>
			<content:encoded><![CDATA[<ul id="sommaire"><li><a href="#allo-la-reception-je-n-ai-pas-tout-capte">&laquo;&nbsp;Allo ? La réception ? Je n&#8217;ai pas tout capté !&nbsp;&raquo;</a></li><li><a href="#restons-terre-a-terre">Restons &laquo;&nbsp;terre à terre&nbsp;&raquo;&#8230;</a></li><li><a href="#la-concurrence-lt-em-gt-en-a-gros-sur-la-pomme-lt-em-gt">La concurrence <em>en a gros sur la pomme</em>&#8230;</a></li><li><a href="#il-n-y-a-pas-de-probleme-il-n-y-a-que-des-solutions-andre-gide">&laquo;&nbsp;Il n&#8217;y a pas de problème ; il n&#8217;y a que des solutions.&nbsp;&raquo; (André GIDE)</a></li><li><a href="#il-ne-reste-plus-qu-a-se-tenir-lt-em-gt-au-courant-lt-em-gt">Il ne reste plus qu&#8217;à se tenir &laquo;&nbsp;<em>au courant&nbsp;&raquo;</em> &#8230;</a></li></ul><p>Bonjour à tous !</p>
<p>Dans cette section, je vous propose un petit moment de détente, vous qui avez sûrement travaillé dur les articles proposés sur Ifnot !</p>
<p>Chaque article de cette partie traitera d&#8217;un sujet du domaine de l&#8217;informatique et des nouvelles technologies, mais avec une pointe d&#8217;humour agrémentée de quelques jeux de mots&#8230;</p>
<p>Bonne lecture de ce premier texte, le but étant bien sûr de s&#8217;informer&#8230; et de trouver les jeux de mots aussi =).<span id="more-545"></span></p>
<p>Comme il faut bien débuter par quelque chose&#8230; je commencerai ici par un des buzz de l&#8217;été : le problème de réception d&#8217;un des<em> fruits</em> produits par <em>Apple</em> : l&#8217;iPhone 4 (bien que ce problème existerait déjà sur d&#8217;anciennes versions&#8230;)&#8230; autant dire que<em> ce n&#8217;est pas du gâteau</em> (bon ok celui-là était facile).</p>
<a name="allo-la-reception-je-n-ai-pas-tout-capte"></a><h2>&laquo;&nbsp;Allo ? La réception ? Je n&#8217;ai pas tout capté !&nbsp;&raquo;</h2>


<p><a href="http://www.ifnot.fr/wp-content/uploads/2010/09/la_cause1.jpg"><img class="alignleft size-medium wp-image-601" title="la_cause" src="http://www.ifnot.fr/wp-content/uploads/2010/09/la_cause1-300x206.jpg" alt="" width="300" height="206" /></a>Tout d&#8217;abord, prenons nos<em> quartiers</em> afin de délimiter quel est le <em>pépin</em> rencontré par Apple : l&#8217;antenne intégrée dans le coin inférieur gauche de l&#8217;iPhone.</p>
<p>Celle-ci souffrirait d&#8217;un souci de réception du signal lorsque le produit est tenu d&#8217;une certaine manière&#8230;</p>
<p>En clair, si tu le tiens bien : &laquo;&nbsp;<em>I phone</em>&laquo;&nbsp;&#8230;</p>
<p>Si tu le tiens mal : &laquo;&nbsp;<em>I phone</em> plus grand chose&nbsp;&raquo;&#8230;</p>
<a name="restons-terre-a-terre"></a><h2>Restons &laquo;&nbsp;terre à terre&nbsp;&raquo;&#8230;</h2>


<p><a href="http://www.ifnot.fr/wp-content/uploads/2010/09/pomme.jpg"><img class="size-thumbnail wp-image-570 alignleft" title="pomme" src="http://www.ifnot.fr/wp-content/uploads/2010/09/pomme-150x150.jpg" alt="" width="150" height="150" /></a>Mais &laquo;&nbsp;quel <em>ver</em>&nbsp;&raquo; a pu attaquer l&#8217;iPhone 4, version censée être plus<em> mûre</em> et donc meilleure que ces prédécesseurs ?&#8230; Après avoir <em>épluché</em> quelques articles sur le net&#8230; je n&#8217;ai pas trouvé de réelle explication&#8230; Apple <em>cultive</em> le mystère sans pour autant &laquo;&nbsp;<em>nous tenir au jus</em>&nbsp;&raquo; si j&#8217;ose dire&#8230; c&#8217;est pas de pot quoi&#8230; En parlant de &laquo;&nbsp;<em>peau</em>&laquo;&nbsp;&#8230; c&#8217;est la solution proposée par Apple actuellement : l&#8217;acquisition d&#8217;un étui pour éviter le contact avec la zone dite &laquo;&nbsp;sensible&nbsp;&raquo; (étui fait d&#8217;un matériau isolant). La  <em>combine est</em> dont toute trouvée pour Apple, qui est resté <em>à l&#8217;écoute</em> des retours des consommateurs&#8230; et des médias&#8230;</p>
<a name="la-concurrence-lt-em-gt-en-a-gros-sur-la-pomme-lt-em-gt"></a><h2>La concurrence <em>en a gros sur la pomme</em>&#8230;</h2>


<p><img class="size-thumbnail wp-image-568 alignright" style="margin-left: 10px; margin-right: 10px;" title="smartphone" src="http://www.ifnot.fr/wp-content/uploads/2010/09/smartphone-150x150.jpg" alt="" width="170" height="170" />Mais, entre-temps, la concurrence a su profiter de cette aubaine et faire son coup de&#8230; pub&#8230; ce qui n&#8217;a pas plus à Apple ! Dans une conférence, Apple a expliqué que ce souci existe aussi chez ses concurrents&#8230; autrement dit &laquo;&nbsp;<em>Qu&#8217;HT-C</em> téléphones concurrents ce n&#8217;est pas mieux&#8230; [qu'acheter ces]&laquo;&nbsp;&#8230; Mais faire diversion en attaquant les concurrents n&#8217;était pas non plus une bonne idée&#8230;</p>
<p>Pour vous faire suivre le<em> fil </em>de l&#8217;histoire, (raté justement il n&#8217;y a pas de fil&#8230;), la concurrence a répondu à ses &laquo;&nbsp;fausses&nbsp;&raquo; accusations, et aujourd&#8217;hui encore ne &laquo;&nbsp;<em>lâche pas prise&nbsp;&raquo;</em> dans la guerre à la médiatisation du problème&#8230;</p>
<p>Pour certains, comme Samsung, <em>la coupe est pleine</em> ! Apple <em>se paye la pomme</em> de ces concurrents&#8230; En<em> queue</em> des déclarations, le constructeur corréen a expliqué que ses produits étaient étudiés justement pour éviter ces problèmes, notamment de part la position de l&#8217;antenne, différente dans leurs produits.</p>
<a name="il-n-y-a-pas-de-probleme-il-n-y-a-que-des-solutions-andre-gide"></a><h2>&laquo;&nbsp;Il n&#8217;y a pas de problème ; il n&#8217;y a que des solutions.&nbsp;&raquo; (André GIDE)</h2>


<p>Voilà, je pense avoir résumé la situation&#8230; sachant qu&#8217;aujourd&#8217;hui, <em>cerise sur le gâteau</em>&#8230; les consommateurs n&#8217;ont que pour seule solution d&#8217;acheter donc cet étui, remboursé heureusement, pour contourner le problème&#8230; Apple travaillerait sur une mise à jour de son iOS pour éluder ce souci et pour calmer la polémique. Mais, à priori, la position de cette antenne rend la tâche ardue, ce n&#8217;est donc <em>pas de la tarte</em> et ils n&#8217;ont pas fini de <em>déguster</em>&#8230; Peut-être qu&#8217;à terme il faudra créer un label &laquo;&nbsp;pomme&nbsp;&raquo; pour  éviter qu&#8217;Apple ne se fasse <em>cuisiner</em> de la sorte&#8230;</p>
<p>Au moins, chaque utilisateur doit aujourd&#8217;hui être informé de cette affaire&#8230; et oui, il y aussi une application pour ça !</p>
<a name="il-ne-reste-plus-qu-a-se-tenir-lt-em-gt-au-courant-lt-em-gt"></a><h2>Il ne reste plus qu&#8217;à se tenir &laquo;&nbsp;<em>au courant&nbsp;&raquo;</em> &#8230;</h2>


<p><img class="size-thumbnail wp-image-569 alignleft" style="margin-left: 10px; margin-right: 10px;" title="prise-courant" src="http://www.ifnot.fr/wp-content/uploads/2010/09/prise-courant-150x150.jpg" alt="" width="150" height="150" /></p>
<p>Pour finir, on peut dire que l&#8217;ambiance<em> électrique</em> qui existe sur ce marché ne risque pas de s&#8217;<em>atténuer</em> ; la concurrence fait de la<em> résistance</em>, les <em>tensions</em> montent, mais heureusement personne n&#8217;a encore <em>disjoncté</em>&#8230; enfin je crois&#8230;</p>
<p>Sur ces mots, chers &laquo;&nbsp;consommateurs&nbsp;&raquo;, je mets fin à ce premier article. Restez <em>branché</em> sur Ifnot, d&#8217;autres articles dans nos différentes sections arriveront prochainement !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ifnot.fr/humour-actualite-apple-et-le-probleme-de-reception-de-signal-de-liphone-4.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>(Astuce) HTML – Spoofer l’URL d’un lien href</title>
		<link>http://www.ifnot.fr/spoofer-url-lien-href.html</link>
		<comments>http://www.ifnot.fr/spoofer-url-lien-href.html#comments</comments>
		<pubDate>Wed, 01 Sep 2010 15:54:02 +0000</pubDate>
		<dc:creator>Anael Favre</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[href]]></category>
		<category><![CDATA[lien caché]]></category>
		<category><![CDATA[lien href]]></category>
		<category><![CDATA[spoof href]]></category>
		<category><![CDATA[spoof lien]]></category>
		<category><![CDATA[spoofer]]></category>
		<category><![CDATA[spoofing lien]]></category>

		<guid isPermaLink="false">http://www.ifnot.fr/?p=612</guid>
		<description><![CDATA[Il y a quelques jours, j&#8217;ai trouvé une technique pour spoofer (remplacer) l&#8217;URL d&#8217;un lien href. L&#8217;astuce est très simple et fonctionne plutôt pas mal. Testez par vous même mon super lien spoofé : Accéder à : www.google.fr N&#8217;oubliez pas de bien regarder l&#8217;adresse du lien dans la barre d&#8217;état de votre navigateur au survol&#8230; Oui [...]]]></description>
			<content:encoded><![CDATA[<ul id="sommaire"></ul><p><a href="http://www.ifnot.fr/wp-content/uploads/2010/09/html.png"><img class="alignleft size-medium wp-image-621" title="html" src="http://www.ifnot.fr/wp-content/uploads/2010/09/html-300x300.png" alt="" width="300" height="300" /></a>Il y a quelques jours, j&#8217;ai trouvé une technique pour spoofer (remplacer) l&#8217;URL d&#8217;un lien href. L&#8217;astuce est très simple et fonctionne plutôt pas mal.</p>
<p>Testez par vous même mon super <strong>lien spoofé</strong> :</p>
<p>Accéder à : <a onclick="this.setAttribute('href', 'http://www.ifnot.fr/spoof-url-google');" href="http://www.google.fr/">www.google.fr</a></p>
<p>N&#8217;oubliez pas de bien regarder l&#8217;adresse du lien dans la barre d&#8217;état de votre navigateur au survol&#8230; Oui oui, c&#8217;est bien le bon lien <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/smile.png' alt=':)' class='wp-smiley' /> </p>
<p>Bluffant non ?</p>
<p><span id="more-612"></span></p>
<div style="clear: left;"></div>
<p>La technique est pourtant très simple à mettre en place. Remplacez simplement l&#8217;attribut href de la base &laquo;&nbsp;a&nbsp;&raquo; au &laquo;&nbsp;onclick&nbsp;&raquo; en javascript et le tour est joué !</p>
<p>Voici le code source que j&#8217;ai utilisé pour mon exemple :</p>
<pre class="php" title="code">&lt;a onclick="this.setAttribute('href', 'http://www.ifnot.fr/spoof-url-google');" href="http://www.google.fr/"&gt;www.google.fr&lt;/a&gt;</pre>
<p>Attention tout de même à l&#8217;utilisation de ce code&#8230; Je ne suis en aucun cas responsable d&#8217;une utilisation frauduleuse. <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/smile.png' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ifnot.fr/spoofer-url-lien-href.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>(Référencement) En SEO on ne dit pas</title>
		<link>http://www.ifnot.fr/referencement-en-seo-on-ne-dit-pas.html</link>
		<comments>http://www.ifnot.fr/referencement-en-seo-on-ne-dit-pas.html#comments</comments>
		<pubDate>Tue, 31 Aug 2010 12:49:31 +0000</pubDate>
		<dc:creator>Anael Favre</dc:creator>
				<category><![CDATA[Référencement]]></category>
		<category><![CDATA[humour]]></category>
		<category><![CDATA[jargon]]></category>
		<category><![CDATA[référencement]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://www.ifnot.fr/?p=523</guid>
		<description><![CDATA[Nombreux sont les référenceurs et webmasters qui utilisent des jargons assez difficile à comprendre lors de leur activité. Voici un petit article posté sur le blog de l&#8217;agence Axe-Net qui permet de &#171;&#160;retranscrire leurs idées et réflexions d’une manière politiquement correcte&#160;&#187;. Lire l&#8217;article &#171;&#160;En SEO, on ne dit pas&#160;&#187; sur le blog Axe-Net]]></description>
			<content:encoded><![CDATA[<ul id="sommaire"></ul><p><a href="http://blog.axe-net.fr/on-ne-dit-pas/"><img class="alignleft size-medium wp-image-525" title="seo" src="http://www.ifnot.fr/wp-content/uploads/2010/08/seo-300x140.png" alt="" width="300" height="140" /></a>Nombreux sont les référenceurs et webmasters qui utilisent des jargons assez difficile à comprendre lors de leur activité.</p>
<p>Voici un petit article posté sur le blog de l&#8217;agence <a href="http://blog.axe-net.fr/" target="_blank">Axe-Net</a> qui permet de &laquo;&nbsp;retranscrire leurs idées et réflexions d’une manière politiquement correcte&nbsp;&raquo;.</p>
<p><a href="http://blog.axe-net.fr/on-ne-dit-pas/">Lire l&#8217;article &laquo;&nbsp;En SEO, on ne dit pas&nbsp;&raquo; sur le blog Axe-Net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ifnot.fr/referencement-en-seo-on-ne-dit-pas.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>(Astuce) PHP &#8211; alternative à eval, comment et pourquoi s&#8217;en passer ?</title>
		<link>http://www.ifnot.fr/alternative-eval.html</link>
		<comments>http://www.ifnot.fr/alternative-eval.html#comments</comments>
		<pubDate>Tue, 31 Aug 2010 12:03:04 +0000</pubDate>
		<dc:creator>Anael Favre</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[alternatives eval]]></category>
		<category><![CDATA[compatibilité]]></category>
		<category><![CDATA[eval]]></category>
		<category><![CDATA[fonctions]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[performances]]></category>
		<category><![CDATA[sécurité]]></category>

		<guid isPermaLink="false">http://www.ifnot.fr/?p=378</guid>
		<description><![CDATA[3 raisons de ne pas utiliser evalLes alternatives pour remplacer evalTout le monde le sait, utiliser la fonction eval de PHP, c&#8217;est le mal ! Mais savez-vous pourquoi ? Et comment peut-on faire pour remplacer cette fonction avec d&#8217;autres méthodes ? Cet article aura pour but de recenser les alternatives à eval et se veut être exhaustif à [...]]]></description>
			<content:encoded><![CDATA[<ul id="sommaire"><li><a href="#3-raisons-de-ne-pas-utiliser-eval">3 raisons de ne pas utiliser eval</a></li><li><a href="#les-alternatives-pour-remplacer-eval">Les alternatives pour remplacer eval</a></li></ul><p><img class="alignleft size-full wp-image-520" title="astuces_php" src="http://www.ifnot.fr/wp-content/uploads/2010/08/astuces_php.png" alt="" width="210" height="182" />Tout le monde le sait, utiliser la fonction eval de PHP, c&#8217;est le mal <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/devil.png' alt=':devil:' class='wp-smiley' /> ! Mais savez-vous pourquoi ? Et comment peut-on faire pour remplacer cette fonction avec d&#8217;autres méthodes ?</p>
<p>Cet article aura pour but de recenser les <strong>alternatives à eval</strong> et se veut être exhaustif à force de modifications et de contributions, j&#8217;ai donc besoin de votre aide <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/tongue.png' alt=':P' class='wp-smiley' /> .</p>
<p><span id="more-378"></span></p>
<a name="3-raisons-de-ne-pas-utiliser-eval"></a><h2>3 raisons de ne pas utiliser eval</h2>


<h3>1) Risque d&#8217;insertion de code</h3>
<p>Étant donné que c&#8217;est une chaine qui va être <strong>exécutée par PHP</strong>, il se peut que, d&#8217;une manière ou d&#8217;une autre, une personne mal intentionnée puisse insérer du code dans votre eval. Il suffit d&#8217;une simple configuration spécifique au niveau du serveur comme &laquo;&nbsp;register_globals&nbsp;&raquo; pour qu&#8217;une variable puisse être modifiée par un utilisateur, ce qui se répercutera sur votre eval <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/getlost.png' alt=':/' class='wp-smiley' /> .</p>
<h3>2) Un suivi des erreurs difficile</h3>
<p>Vu que votre code est exécuté par une fonction et non directement par le moteur PHP, une &laquo;&nbsp;parse error&nbsp;&raquo; ou tout autre erreur de syntaxe sera beaucoup plus difficile à traiter et à corriger, surtout si votre chaine exécutée dans <strong>eval </strong>devient volumineuse.</p>
<h3>3) Une fonction (trop) particulière</h3>
<p>En suivant l&#8217;actualité du langage PHP, on remarque que la communauté des développeurs travaillent de plus en plus sur la pré-compilation du code PHP afin d&#8217;accroître la rapidité d&#8217;exécution des scripts (par exemple <a href="http://www.korben.info/hiphop-le-compilateur-php-de-facebook.html" target="_blank">Facebook avec HipHop</a>). Or, la fonction eval n&#8217;est plus supportée par ces systèmes. En pariant sur l&#8217;avenir, il est probable (je dis bien &laquo;&nbsp;probable&nbsp;&raquo;) que cette fonction soit peu à peu abandonnée.</p>
<a name="les-alternatives-pour-remplacer-eval"></a><h2>Les alternatives pour remplacer eval</h2>


<h3>Modification d&#8217;une variable avec un nom variable</h3>
<p>Parfois, on doit modifier une variable dont on ne connait pas le nom. En utilisant eval, on peut créer une chaine qui génère dynamiquement le nom de la variable à partir du contenu d&#8217;une autre (Oui, oui <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/tongue.png' alt=':P' class='wp-smiley' /> ). Cependant, sans eval, c&#8217;est aussi possible <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/smile.png' alt=':)' class='wp-smiley' /> ! Pour cela il suffit de faire :</p>
<pre class="php" title="code">// Variable dont on ne connait pas le nom
$article = "test";

// Le nom de la variable est stocké dans celle-ci
$nomDeLaVariable = "article";

// On va modifier la variable qui a un nom variable
$$nomDeLaVariable = "test2";

// On affiche le resultat : "test2" !
echo $article;</pre>
<p>Effectivement, en utilisant un double dollar &laquo;&nbsp;$$&nbsp;&raquo;, on remplace le nom de la variable par le contenu de la variable &laquo;&nbsp;nomDeLaVariable&nbsp;&raquo;.</p>
<h3>Appel d&#8217;une fonction avec un nom variable</h3>
<p>Tout comme le point précédent, on va utiliser une méthode relativement similaire ; voici l&#8217;exemple :</p>
<pre class="php" title="code">// Définition d'une fonction avec un nom que l'on ne connait pas
function plop() {
	echo "test";
}

// Nom de la fonction stockée dans cette variable
$nomDeLaFonction = "plop";

// Appel de la fonction avec le nom stocké dans $nomDeLaFonction
$nomDeLaFonction();</pre>
<p>Et voilà ! La fonction &laquo;&nbsp;plop()&nbsp;&raquo; sera exécutée ! Il faut savoir qu&#8217;il vous est aussi possible d&#8217;utiliser <a href="http://php.net/manual/fr/function.call-user-func.php" target="_blank">call_user_func</a> de php. Vous pouvez aussi consulter <a href="http://www.php.net/manual/fr/function.call-user-func-array.php" target="_blank">call-user-func-array</a> pour manipuler plus facilement les paramètres à envoyer à votre fonction.</p>
<h3>Créer une instance d&#8217;une classe avec un nom variable</h3>
<p>Comme pour les deux points précédents, vous pouvez faire :</p>
<pre class="php" title="code">$Objet = new $nomObjet();</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ifnot.fr/alternative-eval.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>(Design) Pack icons gratuits pour Android, Iphone et Ipad</title>
		<link>http://www.ifnot.fr/icons-gratuits-pour-android-iphone-ipad.html</link>
		<comments>http://www.ifnot.fr/icons-gratuits-pour-android-iphone-ipad.html#comments</comments>
		<pubDate>Sat, 28 Aug 2010 19:02:23 +0000</pubDate>
		<dc:creator>Anael Favre</dc:creator>
				<category><![CDATA[Design Web]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[boutons gratuits]]></category>
		<category><![CDATA[boutons ipad]]></category>
		<category><![CDATA[boutons iphone]]></category>
		<category><![CDATA[free icons]]></category>
		<category><![CDATA[gratuit]]></category>
		<category><![CDATA[icones]]></category>
		<category><![CDATA[icones gratuits]]></category>
		<category><![CDATA[icons]]></category>
		<category><![CDATA[icons android]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.ifnot.fr/?p=473</guid>
		<description><![CDATA[Icônes gratuites pour AndroidIcônes gratuites pour Iphone et IpadBoutons gratuits pour Iphone et Ipad (pack 1)Boutons gratuits pour Iphone et Ipad (pack 2)Boutons gratuits pour Iphone et Ipad (pack 3)Aujourd&#8217;hui je vous propose quelques petits packs d&#8217;icônes gratuits de qualité sur la thématique des appareils mobiles (Android, Iphone et Ipad) . A l&#8217;heure où les appareils mobiles [...]]]></description>
			<content:encoded><![CDATA[<ul id="sommaire"><li><a href="#icones-gratuites-pour-android">Icônes gratuites pour Android</a></li><li><a href="#icones-gratuites-pour-iphone-et-ipad">Icônes gratuites pour Iphone et Ipad</a></li><li><a href="#boutons-gratuits-pour-iphone-et-ipad-pack-1">Boutons gratuits pour Iphone et Ipad (pack 1)</a></li><li><a href="#boutons-gratuits-pour-iphone-et-ipad-pack-2">Boutons gratuits pour Iphone et Ipad (pack 2)</a></li><li><a href="#boutons-gratuits-pour-iphone-et-ipad-pack-3">Boutons gratuits pour Iphone et Ipad (pack 3)</a></li></ul><p><img class="alignleft size-medium wp-image-496" title="apple-iphone-ipad" src="http://www.ifnot.fr/wp-content/uploads/2010/08/apple-iphone-ipad-300x274.jpg" alt="" width="300" height="274" />Aujourd&#8217;hui je vous propose quelques petits <strong>packs d&#8217;icônes gratuits</strong> de qualité sur la thématique des<strong> appareils mobiles</strong> (<strong>Android</strong>, <strong>Iphone </strong>et <strong>Ipad</strong>) <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/laughing.png' alt=':D' class='wp-smiley' /> .</p>
<p>A l&#8217;heure où les appareils mobiles deviennent omniprésents, le développement de sites web et d&#8217;applications sur ces nouveaux matériels doivent correspondre avec le style de base de l&#8217;appareil. Pour cela, ces packs d&#8217;icons et de boutons vous permettront de réaliser de belles applications.</p>
<p><span id="more-473"></span></p>
<a name="icones-gratuites-pour-android"></a><h2>Icônes gratuites pour Android</h2>


<p><a href="http://www.androidicons.com/"><img class="alignnone size-full wp-image-480" title="Android Free Icons" src="http://www.ifnot.fr/wp-content/uploads/2010/08/AndroidFreeIcons.png" alt="" width="478" height="256" /></a></p>
<p>Voici un pack d&#8217;<strong>icônes gratuit</strong> sur le <strong>thème d&#8217;Android</strong>. Sur le site de l&#8217;éditeur, vous avez le choix entre un pack de 30 icônes pour vos menus, et un pack de 8 icônes de &laquo;&nbsp;monstres&nbsp;&raquo;, correspondant au style d&#8217;Android 2.x.</p>
<ul>
<li><a href="http://www.androidicons.com/">Site Internet du pack d&#8217;icônes</a></li>
<li>Licence : Creative Commons</li>
</ul>
<a name="icones-gratuites-pour-iphone-et-ipad"></a><h2>Icônes gratuites pour Iphone et Ipad</h2>


<p><a href="http://glyphish.com/"><img class="alignnone size-full wp-image-483" title="Iphone Ipad Free Icons" src="http://www.ifnot.fr/wp-content/uploads/2010/08/IphoneIpadFreeIcons.png" alt="" width="503" height="364" /></a></p>
<p>Voici un pack d<strong>&#8216;icônes gratuit</strong> sur le <strong>thème de l&#8217;Iphone et de l&#8217;Ipad</strong>. Aussi bien pour Iphone que pour Ipad, ce pack conviendra parfaitement pour vos applications pour ces appareils. A noter qu&#8217;une version &laquo;&nbsp;x2&#8243; (deux fois plus détaillée) est disponible en téléchargement pour 25$ !</p>
<ul>
<li><a href="http://glyphish.com/">Site Internet du pack d&#8217;icônes</a></li>
<li>Licence : Creative Commons</li>
</ul>
<a name="boutons-gratuits-pour-iphone-et-ipad-pack-1"></a><h2>Boutons gratuits pour Iphone et Ipad (pack 1)</h2>


<p><a href="http://www.ifnot.fr/wp-content/uploads/2010/08/boutonsGratuitsIphoneIpad1.png"><img class="alignnone size-full wp-image-484" title="Boutons Gratuits Iphone Ipad" src="http://www.ifnot.fr/wp-content/uploads/2010/08/boutonsGratuitsIphoneIpad1.png" alt="" width="495" height="424" /></a></p>
<p>Ce pack contient des <strong>boutons gratuits pour Iphone et Ipad</strong>. Avec ce pack de <strong>boutons gratuits</strong>, vous pourrez utiliser des <strong>boutons de qualité</strong> pour vos applications mobiles.</p>
<ul>
<li><a href="http://blog.iconspedia.com/icons/120-free-icons-iphone-style-icon-set-238/">Site Internet du pack d&#8217;icônes</a></li>
<li>Licence : gratuits pour sites personnels et professionnels (Sites web, thèmes, applications).</li>
</ul>
<a name="boutons-gratuits-pour-iphone-et-ipad-pack-2"></a><h2>Boutons gratuits pour Iphone et Ipad (pack 2)</h2>


<p><a href="http://www.mezzoblue.com/icons/chalkwork/iphone/"><img class="alignnone size-full wp-image-485" title="boutonsGratuitsIphoneIpad2" src="http://www.ifnot.fr/wp-content/uploads/2010/08/boutonsGratuitsIphoneIpad2.png" alt="" width="463" height="469" /></a></p>
<p>Ce second pack de <strong>boutons gratuits pour Iphone et Ipad</strong> utilise des textures en arrière plan, le rendu est fort sympathique <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/tongue.png' alt=':P' class='wp-smiley' /> !</p>
<ul>
<li><a href="http://www.mezzoblue.com/icons/chalkwork/iphone/">Site Internet du pack d&#8217;icônes</a></li>
<li>Licence : <a href="http://mezzoblue.com/icons/license/#license-iphone">Chalkwork license</a></li>
</ul>
<a name="boutons-gratuits-pour-iphone-et-ipad-pack-3"></a><h2>Boutons gratuits pour Iphone et Ipad (pack 3)</h2>


<p><a href="http://kon.deviantart.com/art/Round-Theme-Icons-102082380"><img class="alignnone size-full wp-image-488" title="Boutons Gratuits Iphone Ipad" src="http://www.ifnot.fr/wp-content/uploads/2010/08/BoutonsGratuitsIphoneIpad.png" alt="" width="320" height="480" /></a></p>
<p>Encore de jolis boutons pour vos applications Iphone et Ipad !</p>
<ul>
<li><a href="http://kon.deviantart.com/art/Round-Theme-Icons-102082380">Site Internet du pack d&#8217;icônes</a></li>
<li>Licence : <a href="http://macthemes.net/forum/viewtopic.php?pid=355665#p355665.">Les droits sont (apparemment) écrits ici</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ifnot.fr/icons-gratuits-pour-android-iphone-ipad.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(Référencement) 600 Backlinks gratuits !!!</title>
		<link>http://www.ifnot.fr/600-backlinks-gratuits.html</link>
		<comments>http://www.ifnot.fr/600-backlinks-gratuits.html#comments</comments>
		<pubDate>Fri, 27 Aug 2010 08:37:24 +0000</pubDate>
		<dc:creator>Anael Favre</dc:creator>
				<category><![CDATA[Référencement]]></category>
		<category><![CDATA[backlink]]></category>
		<category><![CDATA[gratuit]]></category>
		<category><![CDATA[lien dur]]></category>

		<guid isPermaLink="false">http://www.ifnot.fr/?p=443</guid>
		<description><![CDATA[Aujourd&#8217;hui, je vous propose un site qui vous permet de gagner plus de 600 backlinks gratuitement ! En effet, voici un script de backlinks gratuit qui permet de générer plus de 600 backlinks vers votre site. Cet outil fut publié il y a quelques jours sur bestblogbox. Les sites de destinations semblent disposer d&#8217;un bon [...]]]></description>
			<content:encoded><![CDATA[<ul id="sommaire"></ul><p><img class="alignleft size-medium wp-image-444" title="links" src="http://www.ifnot.fr/wp-content/uploads/2010/08/links-300x192.jpg" alt="" width="300" height="192" />Aujourd&#8217;hui, je vous propose un site qui vous permet de gagner plus de 600 <strong>backlinks gratuitement</strong> <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/smile.png' alt=':)' class='wp-smiley' /> !</p>
<p>En effet, voici un <strong>script de backlinks gratuit</strong> qui permet de générer plus de 600 <strong>backlinks </strong>vers votre site. Cet outil fut publié il y a quelques jours sur <a href="http://www.bestblogbox.com" target="_blank">bestblogbox</a>.</p>
<p><span id="more-443"></span></p>
<p>Les sites de destinations semblent disposer d&#8217;un bon PR et le <strong>script de backlink</strong> est plutôt simple à utiliser (il suffit de saisir son url sur chaque page qui vous enregistrera dans 100 sites).</p>
<p>Apparemment, il n&#8217;y a pas de risque de Sandbox étant donné que les sites (et donc les <strong>backlinks</strong>) sont relativement lents à l&#8217;indexation.</p>
<p><a href="http://www.freesitescripts.com/">Cliquez ici pour avoir plus de 600 Backlinks gratuits</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ifnot.fr/600-backlinks-gratuits.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>(Design) Immersive Garden : un magnifique site en flash</title>
		<link>http://www.ifnot.fr/immersive-garden-un-magnifique-site-en-flash.html</link>
		<comments>http://www.ifnot.fr/immersive-garden-un-magnifique-site-en-flash.html#comments</comments>
		<pubDate>Thu, 26 Aug 2010 09:43:47 +0000</pubDate>
		<dc:creator>Anael Favre</dc:creator>
				<category><![CDATA[Design Web]]></category>
		<category><![CDATA[design flash]]></category>
		<category><![CDATA[Favourite Website Awards]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[full flash]]></category>
		<category><![CDATA[FWA]]></category>
		<category><![CDATA[Immersive Garden]]></category>
		<category><![CDATA[SeoMix]]></category>
		<category><![CDATA[site web]]></category>

		<guid isPermaLink="false">http://www.ifnot.fr/?p=429</guid>
		<description><![CDATA[Voici Immersive Garden, un site en flash très bien réalisé qui est enregistré dans les Favourite Website Awards. On comprend très bien le classement de ce site vu la qualité des animations et la propreté générale du site. Immersive Garden est un véritable plaisir pour les yeux. Par ailleurs, je vous invite à lire la critique du [...]]]></description>
			<content:encoded><![CDATA[<ul id="sommaire"></ul><p><a href="http://www.ifnot.fr/wp-content/uploads/2010/08/wallpaper-pingouin.jpg"><img class="alignleft size-medium wp-image-430" title="wallpaper-pingouin" src="http://www.ifnot.fr/wp-content/uploads/2010/08/wallpaper-pingouin-300x189.jpg" alt="" width="300" height="189" /></a>Voici <a href="http://imm-g.com/" target="_blank"><strong>Immersive Garden</strong></a>, un site en flash très bien réalisé qui est enregistré dans les <a href="http://www.thefwa.com/">Favourite Website Awards</a>. On comprend très bien le classement de ce site vu la qualité des animations et la propreté générale du site. <strong>Immersive Garden</strong> est un véritable plaisir pour les yeux. Par ailleurs, je vous invite à lire la critique du site par SeoMix.</p>
<p><a href="http://imm-g.com/">Voir &laquo;&nbsp;Immersive Garden&nbsp;&raquo;</a></p>
<p><a href="http://www.seomix.fr/web/design-website/immersive-garden/">Voir la critique du site rédigée par SeoMix</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ifnot.fr/immersive-garden-un-magnifique-site-en-flash.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>(Design) 55 magnifiques thèmes en html5</title>
		<link>http://www.ifnot.fr/design-55-magnifiques-themes-en-html5.html</link>
		<comments>http://www.ifnot.fr/design-55-magnifiques-themes-en-html5.html#comments</comments>
		<pubDate>Thu, 26 Aug 2010 07:38:12 +0000</pubDate>
		<dc:creator>Anael Favre</dc:creator>
				<category><![CDATA[Design Web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[site web]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[thème]]></category>
		<category><![CDATA[webdesignledger]]></category>

		<guid isPermaLink="false">http://www.ifnot.fr/?p=412</guid>
		<description><![CDATA[Il y a plusieurs jours, WDL a publié une liste de 55 thèmes de sites réalisés en HTML5. Je vous laisse découvrir ces petits bijoux ! Lire l&#8217;article &#171;&#160;55 Excellent Examples of Websites Using HTML5&#8243;  sur webdesignledger.com]]></description>
			<content:encoded><![CDATA[<ul id="sommaire"></ul><p><img class="alignleft size-medium wp-image-419" title="wdl" src="http://www.ifnot.fr/wp-content/uploads/2010/08/wdl-300x213.png" alt="" width="300" height="213" />Il y a plusieurs jours, <a href="http://webdesignledger.com/" target="_blank">WDL </a>a publié une liste de 55 thèmes de sites réalisés en HTML5. Je vous laisse découvrir ces petits bijoux <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/smile.png' alt=':)' class='wp-smiley' /> !</p>
<p><a href="http://webdesignledger.com/inspiration/55-excellent-examples-of-websites-using-html5">Lire l&#8217;article &laquo;&nbsp;55 Excellent Examples of Websites Using HTML5&#8243;  sur webdesignledger.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ifnot.fr/design-55-magnifiques-themes-en-html5.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(Tuto) PHP &#8211; Hook : Votre application modulaire</title>
		<link>http://www.ifnot.fr/hook-php-votre-application-modulaire.html</link>
		<comments>http://www.ifnot.fr/hook-php-votre-application-modulaire.html#comments</comments>
		<pubDate>Mon, 23 Aug 2010 13:49:11 +0000</pubDate>
		<dc:creator>Anael Favre</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[developpement]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[fonctionnalités]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[hooks]]></category>
		<category><![CDATA[modulaire]]></category>
		<category><![CDATA[modularité]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://www.ifnot.fr/?p=290</guid>
		<description><![CDATA[Introduction au principeMise en place des plugins et des fonctions de HookCréation des points de Hook de votre applicationCréation des plugins qui seront appelés par les HooksConclusionDans les applications complexes (par exemple les Framework ou les CMS), il est de bonne pratique d&#8217;implémenter un système de plugins afin de séparer les fonctionnalités du coeur de votre [...]]]></description>
			<content:encoded><![CDATA[<ul id="sommaire"><li><a href="#introduction-au-principe">Introduction au principe</a></li><li><a href="#mise-en-place-des-plugins-et-des-fonctions-de-hook">Mise en place des plugins et des fonctions de Hook</a></li><li><a href="#creation-des-points-de-hook-de-votre-application">Création des points de Hook de votre application</a></li><li><a href="#creation-des-plugins-qui-seront-appeles-par-les-hooks">Création des plugins qui seront appelés par les Hooks</a></li><li><a href="#conclusion">Conclusion</a></li></ul><p><img class="alignleft size-full wp-image-123" title="php" src="http://www.ifnot.fr/wp-content/uploads/2010/08/php.jpg" alt="php" width="200" height="200" />Dans les applications complexes (par exemple les Framework ou les CMS), il est de bonne pratique d&#8217;implémenter un <strong>système de plugins</strong> afin de séparer les fonctionnalités du coeur de votre système.</p>
<p>Les plugins permettent d&#8217;ajouter des fonctionnalités à votre application certes, mais <em>qu&#8217;en est-il lorsqu&#8217;ils doivent &laquo;&nbsp;modifier&nbsp;&raquo; le comportement du noyau de votre logiciel ?</em></p>
<p>Cette problématique peut être résolue par un <strong>système de &laquo;&nbsp;Hook&nbsp;&raquo;</strong>. Un nom un peu étrange pour un système assez simple.<br />
<span id="more-290"></span></p>
<a name="introduction-au-principe"></a><h2>Introduction au principe</h2>


<h3>Un peu de théorie</h3>
<p>Une application, en gros, c&#8217;est quoi ? Une succession de fonctions (ou méthodes) qui manipulent un bon nombre de variables (ou attributs). Afin de rendre modulaire un noyau, il faut donner le droit à notre plugin de modifier les variables de notre application. C&#8217;est grâce à notre système de <strong>Hook en PHP</strong> nous pourrons effectuer ce partage <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/smile.png' alt=':)' class='wp-smiley' /> !</p>
<blockquote><p>Ok&#8230; Hook, Hook, c&#8217;est bien gentil, mais ça correspond à quoi concrètement ? Ça serait bien que tu nous expliques ! <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/wassat.png' alt='^o)' class='wp-smiley' /> </p></blockquote>
<p>J&#8217;y viens <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/tongue.png' alt=':P' class='wp-smiley' /> ! Donc un système de Hook (littéralement système de &laquo;&nbsp;crochets&nbsp;&raquo;) est le fait de positionner des appels à des fonctions (de nos plugins) aux endroits stratégiques de notre script. Dans ces fonctions, on passe les paramètres par référence, ce qui a pour but de laisser la possibilité à notre fonction de modifier les valeurs des variables du script appelant.</p>
<blockquote><p>Bah oui, mais on ne connait pas le nom de nos fonctions à l&#8217;avance&#8230; Comment on fait alors ? <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/blink.png' alt='oO' class='wp-smiley' /> </p></blockquote>
<p>Oui, effectivement, c&#8217;est bien vous suivez :D&#8230; pour cela on va stocker le nom des fonctions à appeler dans un tableau <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/wink.png' alt=';)' class='wp-smiley' /> .</p>
<h3>Schématisation du fonctionnement</h3>
<p>En gros, c&#8217;est comme si on fait quelque-chose comme ca :</p>
<pre class="php" title="code">// --------------------
// Dans le plugin
// --------------------
// On crée les fonctions qui devront être appelées dans notre application.
function plugin_ajouterTitre() {
...
}
function plugin_modifierContenu() {
...
}

// On stocke les noms des variables dans un tableau
$arrayFonctionsHook = array("plugin_ajouterTitre", "plugin_modifierContenu");

// --------------------
// Dans le noyau de l'application
// --------------------
// On inclue le plugin (et donc les fonctions)
include /* le plugin */;

// On appelle une à une les fonctions du plugin contenues dans le tableau
foreach($arrayFonctionsHook as $fonctionHook) {
$fonctionHook();
}</pre>
<p>Ceci était un exemple très simple présentant brièvement le fonctionnement. Maintenant, on va attaquer les choses sérieuses <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/devil.png' alt=':devil:' class='wp-smiley' /> !</p>
<a name="mise-en-place-des-plugins-et-des-fonctions-de-hook"></a><h2>Mise en place des plugins et des fonctions de Hook</h2>


<h3>Inclure vos plugins dans votre application</h3>
<p>Dans un premier temps, vous devez inclure vos plugins dans votre système. Pour cela, je vous conseille d&#8217;utiliser un répertoire spécifique qui sera lu avec la fonction glob() de PHP, comme ceci :</p>
<pre class="php" title="code">// On liste tous les fichiers qui se terminent par .plugin.php dans le dossier "plugins"
$arrayPlugins = glob(dirname(__FILE__) . '/plugins/*.plugin.php');

// S'il n'y a pas eu d'erreur de lecture du dossier et qu'il y a des fichiers dans le dossier
if(is_array($arrayPlugins)) {
	// Pour chaque plugin trouvé dans le dossier
	foreach($arrayPlugins as $plugin) {
		// On va l'inclure
		include $plugin;
	}
}</pre>
<p>Ce script va donc inclure tous les plugins qui sont situés dans le dossier &laquo;&nbsp;plugins&nbsp;&raquo; dans votre application <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/smile.png' alt=':)' class='wp-smiley' /> .</p>
<h3>Créer une fonction d&#8217;enregistrement et une fonction d&#8217;appel de Hook</h3>
<p>Afin de simplifier l&#8217;enregistrement des Hooks dans un array (ou tableau), on va créer deux fonctions : &laquo;&nbsp;addHook()&nbsp;&raquo; et &laquo;&nbsp;callHook()&nbsp;&raquo;, que nous placerons dans la librairie de fonctions de votre application (vous devez sûrement avoir un fichier regroupant toutes vos fonctions non <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/tongue.png' alt=':P' class='wp-smiley' /> ? ).</p>
<p>Voici la fonction &laquo;&nbsp;addHook()&nbsp;&raquo; :</p>
<pre class="php" title="code">// Création de la fonction addHook() qui servira à l'enregistrement d'un nouveau Hook dans notre tableau de fonctions
// $hookName est le nom de notre hook
// $functionName est le nom de la fonction qui sera appelée lors de ce hook
function addHook($hookName, $functionName) {
	// Enregistrement du nom de la fonction dans le tableau qui sera lu lors de l'appel du Hook $hookName
	$GLOBALS['hooks'][$hookName][] = $functionName;
}</pre>
<blockquote><p>Pourquoi $hookName ? Il sert à quoi ? <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/blink.png' alt='oO' class='wp-smiley' /> </p></blockquote>
<p>Vous pouvez avoir plusieurs <strong>Hooks PHP</strong> dans votre application. Par exemple : un qui sera appelé après avoir généré un article, un autre avant d&#8217;enregistrer un utilisateur, ou encore avant d&#8217;afficher une image, etc&#8230; On va donc les différencier avec un nom unique pour chaque Hook <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/smile.png' alt=':)' class='wp-smiley' /> .</p>
<p>Et la fonction &laquo;&nbsp;callHook&nbsp;&raquo; :</p>
<pre class="php" title="code">// Création de la fonction callHook() qui permet d'appeler les fonctions enregistrées à un Hook donné.
// $hookName est le nom du Hook
// $hookArguments est un array qui contiendra tous les arguments à envoyer à notre fonction
function callHook($hookName, $hookArguments) {
	// On regarde si des fonctions sont enregistrées à notre Hook
	if(isset($GLOBALS['hooks'][$hookName])) {
		// Si oui, on va appeler nos fonctions une à une avec call_user_func_array()
		foreach($GLOBALS['hooks'][$hookName] as $functionName) {
			call_user_func_array($functionName, $hookArguments);
		}
		return true;
	}
	else {
		return false;
	}
}</pre>
<blockquote><p>call_user_func_array() ? Ça appelle les fonctions ce truc ? <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/wassat.png' alt='^o)' class='wp-smiley' /> </p></blockquote>
<p>Oui <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/laughing.png' alt=':D' class='wp-smiley' /> ! C&#8217;est une fonction puissante qui permet d&#8217;appeler une fonction (dont le nom est pris en premier paramètre, dans notre cas &laquo;&nbsp;$functionName&nbsp;&raquo;), et de lui insérer des paramètres (contenus dans &laquo;&nbsp;$hookArguments&nbsp;&raquo;). De plus, cette fonction permet un passage des variables par &laquo;&nbsp;référence&nbsp;&raquo;.</p>
<h3>Transférer des variables par référence à une fonction</h3>
<blockquote><p>En quoi ça consiste ? Quelle est la différence avec un passage de fonction &laquo;&nbsp;normal&nbsp;&raquo; ? <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/wassat.png' alt='^o)' class='wp-smiley' /> </p></blockquote>
<p>Attention, le principe est assez complexe donc assez difficile à suivre <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/smile.png' alt=':)' class='wp-smiley' /> . Lorsqu&#8217;on passe une variable à une fonction, une &laquo;&nbsp;copie&nbsp;&raquo; de celle-ci lui est transférée, ce qui fait qu&#8217;une modification de cette variable ne s&#8217;applique <span style="text-decoration: underline;">uniquement</span> qu&#8217;à la fonction. On va donc dire que la portée de la variable est <span style="text-decoration: underline;">limitée à la fonction</span>.</p>
<p>Un passage par référence <span style="text-decoration: underline;">partage</span> la variable, c&#8217;est à dire que si la fonction modifie la variable, elle sera modifiée dans le script parent. La portée de la variable est donc <span style="text-decoration: underline;">globale dans le script</span>.</p>
<p>Pour transférer une variable à une fonction par référence, il faut faire précéder le nom de la variable par un &laquo;&nbsp;&amp;&nbsp;&raquo;. Comme ceci :</p>
<pre class="php" title="code">// Définition de la fonction qui modifiera les variables
function maFonction($variableCopiee, &amp;$variableParReference) {
	$variableCopiee = "modifiée";
	$variableParReference = "modifiée";
}

// Définition des variables dans le script
$variableCopiee = "test1";
$variableParReference= "test2";

// Modification des variables avec l'appel de notre fonction
maFonction($variableCopiee, &amp;$variableParReference);

// Affichage de nos variables
echo $variableCopiee;
echo $variableParReference;

// Affichera :
// "test1" et "modifiée"</pre>
<p>Testez cet exemple et remarquez qu&#8217;une des deux variables est modifiée dans le script parent.</p>
<a name="creation-des-points-de-hook-de-votre-application"></a><h2>Création des points de Hook de votre application</h2>


<h3>Positionnez correctement vos points de Hook</h3>
<p>Pour que votre plugin puisse modifier &laquo;&nbsp;utilement&nbsp;&raquo; votre application, vous devez soigneusement sélectionner l&#8217;emplacement de vos Hooks. Voici quelques exemples qui pourront vous inspirer :</p>
<ul>
<li>Avant et/ou après la récupération de vos articles en base de données,</li>
<li>Lors de l&#8217;affichage d&#8217;un titre d&#8217;un article,</li>
<li>Lors d&#8217;un enregistrement d&#8217;un utilisateur (ou d&#8217;un article) en base de données</li>
<li>Lors de la modification d&#8217;un élément du site (catégorie, contenu, etc&#8230;)</li>
<li>etc&#8230; En quelque sorte, tous les endroits où vous pensez qu&#8217;un plugin pourrait modifier votre application.</li>
</ul>
<p>De toute manière, un système de <strong>Hook PHP</strong> doit répondre à un besoin, je vous conseille donc de rajouter vos Hooks lors du développement de vos plugins en pensant bien à une utilisation générique (pour d&#8217;autres plugins) <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/wink.png' alt=';)' class='wp-smiley' /> .</p>
<h3>Appel des fonctions liées au Hooks</h3>
<p>Afin d&#8217;appeler les fonctions qui sont enregistrées sur les Hooks nous allons utiliser la dernière fonction &laquo;&nbsp;callHook()&nbsp;&raquo; comme ceci :</p>
<pre class="php" title="code">// Code ...

callHook("EnregistrerUtilisateur", array(&amp;$Utilisateur, $parrainId, $Site))

// Code ...</pre>
<p>Dans notre exemple, les fonctions qui seront enregistrés pour le <strong>Hook</strong> &laquo;&nbsp;EnregistrerUtilisateur&nbsp;&raquo; devront avoir 3 paramètres (contenus dans l&#8217;array) : l&#8217;objet $Utilisateur (modifiable), le numéro du parrain $parrainId (non modifiable) et l&#8217;objet qui correspond au site auquel l&#8217;utilisateur s&#8217;est inscrit $Site.</p>
<p>Toutes les fonctions qui seront enregistrées au Hook &laquo;&nbsp;EnregistrerUtilisateur&nbsp;&raquo; seront donc appelées à cet endroit. Voyons maintenant comment créer une fonction qui sera liée à notre Hook d&#8217;exemple.</p>
<a name="creation-des-plugins-qui-seront-appeles-par-les-hooks"></a><h2>Création des plugins qui seront appelés par les Hooks</h2>


<p>Cette étape est la plus simple, lorsque vous avez enregistré vos Hooks dans votre application, il vous suffit de créer des plugins pour les exploiter <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/tongue.png' alt=':P' class='wp-smiley' /> . Voici un exemple de plugin qui va utiliser le Hook précédent (EnregistrerUtilisateur) :</p>
<pre>Fichier : /plugin/modifierUtilisateur.plugin.php</pre>
<pre class="php" title="code">// On définit une fonction qui modifie le login d'un utilisateur lors de la création
function plugin_modifierUtilisateur(&amp;$Utilisateur, $parrainId, $Site) {
	$Utilisateur-&gt;login = ucfirst(strtolower($Utilisateur-&gt;login));
}
// Ajout de la fonction au Hook qu'on a créé précédement (vous le reconnaissez ?)
addHook("EnregistrerUtilisateur", "plugin_modifierUtilisateur");</pre>
<p>Et voilà, la fonction &laquo;&nbsp;plugin_modifierUtilisateur&nbsp;&raquo; sera appelée dans notre noyau <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/tongue.png' alt=':P' class='wp-smiley' /> !</p>
<a name="conclusion"></a><h2>Conclusion</h2>


<p>Pour conclure notre Tuto., on va récapituler les tâches réalisées pour mettre en place notre <strong>système de Hook en PHP</strong> :</p>
<ol>
<li>Création d&#8217;un bout de code qui inclura tous les fichiers *.plugin.php du dossier &laquo;&nbsp;plugin&nbsp;&raquo; de votre application</li>
<li>Ajout de deux fonctions d&#8217;ajout et d&#8217;appel de Hook dans la librairie de fonctions de votre programme</li>
<li>Mise en place de Hooks aux endroits stratégiques de votre script</li>
<li>Création des plugins qui exploitent les Hooks de votre application.</li>
</ol>
<p>Bien évidemment, ce système peut être largement amélioré. Par exemple, rajouter un entier lors de l&#8217;accrochage d&#8217;une fonction au Hook pour gérer les priorités (pour ceux qui doivent être exécutés avant ou après les autres) etc&#8230; Laissez libre à votre imagination pour d&#8217;améliorer ce système <img src='http://www.ifnot.fr/wp-content/plugins/smilies-themer/Nomicons v2.0/smile.png' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ifnot.fr/hook-php-votre-application-modulaire.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

