<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Me, Myself and I</title>
	
	<link>http://palleas.com</link>
	<description />
	<pubDate>Tue, 18 Nov 2008 13:05:54 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>fr</language>
			<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><meta xmlns="http://pipes.yahoo.com" name="pipes" content="noprocess" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/palleas" type="application/rss+xml" /><item>
		<title>Mon beau sapin !</title>
		<link>http://feeds.feedburner.com/~r/palleas/~3/455978670/</link>
		<comments>http://palleas.com/2008/11/17/mon-beau-sapin/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 13:29:50 +0000</pubDate>
		<dc:creator>Palleas</dc:creator>
		
		<category><![CDATA[Vrac]]></category>

		<guid isPermaLink="false">http://palleas.com/?p=371</guid>
		<description><![CDATA[
Loin de moi l&#8217;idée de me mettre à relayer de l&#8217;information pour pallier à un quelconque problème d&#8217;inspiration, j&#8217;attire votre attention sur ce projet
Le projet est lancé par Penelope Jolicoeur (dont je suis fan, précisons-le) et m&#8217;a beaucoup plu (car noël à la base c&#8217;est cool, rappelons le).
]]></description>
			<content:encoded><![CDATA[<p><a href="http://palleas.com/wp-content/uploads/2008/11/penelope.gif"><img src="http://palleas.com/wp-content/uploads/2008/11/penelope.gif" alt="" title="penelope" width="384" height="430" class="aligncenter size-full wp-image-372" /></a></p>
<p>Loin de moi l&#8217;idée de me mettre à relayer de l&#8217;information pour pallier à un quelconque problème d&#8217;inspiration, j&#8217;attire votre attention sur <a href="http://www.monbeausapin.org/">ce projet</a></p>
<p>Le projet est lancé par <a href="http://www.penelope-jolicoeur.com/">Penelope Jolicoeur</a> (dont je suis fan, précisons-le) et m&#8217;a beaucoup plu (car noël à la base c&#8217;est cool, rappelons le).</p>
<img src="http://feeds.feedburner.com/~r/palleas/~4/455978670" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://palleas.com/2008/11/17/mon-beau-sapin/feed/</wfw:commentRss>
		<feedburner:origLink>http://palleas.com/2008/11/17/mon-beau-sapin/</feedburner:origLink></item>
		<item>
		<title>Tests de matériel de sports outdoor et ski</title>
		<link>http://feeds.feedburner.com/~r/palleas/~3/444466009/</link>
		<comments>http://palleas.com/2008/11/06/tests-de-materiel-de-sports-outdoor-et-ski/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 15:30:24 +0000</pubDate>
		<dc:creator>Palleas</dc:creator>
		
		<category><![CDATA[Pro]]></category>

		<guid isPermaLink="false">http://palleas.com/?p=367</guid>
		<description><![CDATA[
Moi je dis que si j&#8217;étais un fan de sports outdoor et ski, j&#8217;irais suivre ce blog. Mieux encore, je reviendrais dans 24 jours sur ce site.
Après moi j&#8217;dis ça comme ça ! Le blog Mountain-factory ouvre officiellement, et c&#8217;est plutôt cool. Je n&#8217;ai pas (encore) beaucoup bossé dessus puisque que je me suis contenté [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://palleas.com/wp-content/uploads/2008/11/mf.jpg"><img src="http://palleas.com/wp-content/uploads/2008/11/mf-300x242.jpg" alt="" title="mf" width="300" height="242" class="aligncenter size-medium wp-image-368" /></a></p>
<p>Moi je dis que si j&#8217;étais un fan de <a href="http://www.mountain-factory.com">sports outdoor et ski</a>, j&#8217;irais suivre <a href="http://blog.mountain-factory.com">ce blog</a>. Mieux encore, je reviendrais dans 24 jours sur <a href="http://www.mountain-factory.com">ce site</a>.</p>
<p>Après moi j&#8217;dis ça comme ça ! Le blog Mountain-factory ouvre officiellement, et c&#8217;est plutôt cool. Je n&#8217;ai pas (encore) beaucoup bossé dessus puisque que je me suis contenté de mettre en place une mini-régie de pub&#8217; (cf la publicité affichée sur le blog), merci <a href="http://www.beyoung.fr">l&#8217;alternance chez Beyoung </a>et merci <a href="http://palleas.com/2008/03/31/comment-monetiser-un-site-internet/">mon mémoire</a>, donc !</p>
<img src="http://feeds.feedburner.com/~r/palleas/~4/444466009" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://palleas.com/2008/11/06/tests-de-materiel-de-sports-outdoor-et-ski/feed/</wfw:commentRss>
		<feedburner:origLink>http://palleas.com/2008/11/06/tests-de-materiel-de-sports-outdoor-et-ski/</feedburner:origLink></item>
		<item>
		<title>“Utiliser les API Orange avec PHP” publié !</title>
		<link>http://feeds.feedburner.com/~r/palleas/~3/440736399/</link>
		<comments>http://palleas.com/2008/11/03/utiliser-les-api-orange-avec-php-publie/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 08:04:49 +0000</pubDate>
		<dc:creator>Palleas</dc:creator>
		
		<category><![CDATA[Développement]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://palleas.com/?p=363</guid>
		<description><![CDATA[Vous allez croire que je radote, et bien non, pas du tout. J&#8217;ai justement sous mes yeux la nouvelle édition de PhpSolutions Magazine, dans lequel on pourra lire&#8230; Non aller, je vous laisse découvrir :

Voilà, mon premier article dans la presse. Niveau qualité je n&#8217;ai pas eu de retour autres que ceux de la rédaction [...]]]></description>
			<content:encoded><![CDATA[<p>Vous allez croire que je radote, et bien non, pas du tout. J&#8217;ai justement sous mes yeux la nouvelle édition de <a href="http://www.phpsolmag.org/prt/view/actualies/issue/928.html">PhpSolutions Magazine</a>, dans lequel on pourra lire&#8230; Non aller, je vous laisse découvrir :</p>
<p><a href="http://palleas.com/wp-content/uploads/2008/11/phpsol_30_fr.gif"><img src="http://palleas.com/wp-content/uploads/2008/11/phpsol_30_fr.gif" alt="" title="phpsol_30_fr" width="401" height="550" class="aligncenter size-full wp-image-364" /></a></p>
<p>Voilà, mon premier article dans la presse. Niveau qualité je n&#8217;ai pas eu de retour autres que ceux de la rédaction du magazine, mais ça reste somme toute une assez bonne expérience !</p>
<p>En plus c&#8217;est la classe, il y a aussi <a href="http://pelmel.org/spip/">Bricef</a> dedans :P.</p>
<img src="http://feeds.feedburner.com/~r/palleas/~4/440736399" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://palleas.com/2008/11/03/utiliser-les-api-orange-avec-php-publie/feed/</wfw:commentRss>
		<feedburner:origLink>http://palleas.com/2008/11/03/utiliser-les-api-orange-avec-php-publie/</feedburner:origLink></item>
		<item>
		<title>Méthodes magiques __sleep() et __wakeup()</title>
		<link>http://feeds.feedburner.com/~r/palleas/~3/437804324/</link>
		<comments>http://palleas.com/2008/10/31/methodes-magiques-__sleep-et-__wakeup/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 08:02:15 +0000</pubDate>
		<dc:creator>Palleas</dc:creator>
		
		<category><![CDATA[Développement]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://palleas.com/?p=355</guid>
		<description><![CDATA[Continuant sur la même lancée, voici deux nouvelles méthodes magiques, __sleep() et __wakeup() qui vous permettront d’effectuer une action lors de la sérialisation / désérialisation d’une variable.
Qu’est ce que la sérialisation de données ?
Pour résumer très simplement, l’action de sérialiser une variable consiste à convertir celle-ci en une chaine de caractère pour, par exemple, la [...]]]></description>
			<content:encoded><![CDATA[<p>Continuant sur la même lancée, voici deux nouvelles méthodes magiques, <a href="http://fr.php.net/__sleep">__sleep()</a> et <a href="http://fr.php.net/__wakeup">__wakeup()</a> qui vous permettront d’effectuer une action lors de la sérialisation / désérialisation d’une variable.</p>
<h3>Qu’est ce que la sérialisation de données ?</h3>
<p>Pour résumer très simplement, l’action de sérialiser une variable consiste à convertir celle-ci en une chaine de caractère pour, par exemple, la stocker. A contrario, l’action de désérialiser une chaine de caractère consiste à appliquer le procédé inverse et récupérer la variable d’origine. Ce procédé ne se limite pas à PHP, vous le retrouverez dans beaucoup de langages tels que Java, pour ne parler que des plus cools.</p>
<p>Syntaxiquement parlant, la serialisation de données se traduit par l’utilisation de la fonction serialize(), l’action inverse se traduit par unserialize(). Voyons quelques exemples.</p>
<h3>Serialisation  / Deserialisation d’une variable de type integer</h3>
<p><code>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$iVar</span> = <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$sSerialized</span> = <a href="http://www.php.net/serialize"><span class="kw3">serialize</span></a><span class="br0">&#40;</span><span class="re0">$iVar</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$iUnserialized</span> = <a href="http://www.php.net/unserialize"><span class="kw3">unserialize</span></a><span class="br0">&#40;</span><span class="re0">$sSerialized</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;&lt;pre&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$sSerialized</span>,<span class="re0">$iUnserialized</span><span class="br0">&#41;</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">&#8216;&lt;/pre&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p></code></p>
<p>Le premier var_dump affichera :</p>
<blockquote><p>string(4) &#8220;i:1;&#8221;</p></blockquote>
<p>Le seconde affichera :</p>
<blockquote><p>int(1)</p></blockquote>
<p>Non, ce n’est pas très intéressant de serializer un integer étant donné que vous pouvez le stocker directement, mais cet exemple reste utile à l’illustration d’un principe simple : <strong>la serialization d&#8217;une variable préserve le type de celle-ci</strong>. Ainsi on aura bien au retour un integer, au même titre que l’on conservera un Array ou encore un objet.</p>
<h3>Serialisation  / Deserialisation d’un Array</h3>
<p><code>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$aTableau</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;Riri&#8217;</span>,<span class="st0">&#8216;Fifi&#8217;</span>,<span class="st0">&#8216;Loulou&#8217;</span>,<span class="st0">&#8216;Donald&#8217;</span>,<span class="st0">&#8216;Picsou&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$sSerialized</span> = <a href="http://www.php.net/serialize"><span class="kw3">serialize</span></a><span class="br0">&#40;</span><span class="re0">$aTableau</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$aUnserialized</span> = <a href="http://www.php.net/unserialize"><span class="kw3">unserialize</span></a><span class="br0">&#40;</span><span class="re0">$sSerialized</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;&lt;pre&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$sSerialized</span>,<span class="re0">$aUnserialized</span><span class="br0">&#41;</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">&#8216;&lt;/pre&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p></code></p>
<p>Le premier var_dump affichera :</p>
<blockquote><p>string(87) &#8220;a:5:{i:0;s:4:&#8221;Riri&#8221;;i:1;s:4:&#8221;Fifi&#8221;;i:2;s:6:&#8221;Loulou&#8221;;i:3;s:6:&#8221;Donald&#8221;;i:4;s:6:&#8221;Picsou&#8221;;}&#8221;</p></blockquote>
<p>Le deuxième var_dump affichera :</p>
<blockquote><p>array(5) {<br />
  [0]=><br />
  string(4) &#8220;Riri&#8221;<br />
  [1]=><br />
  string(4) &#8220;Fifi&#8221;<br />
  [2]=><br />
  string(6) &#8220;Loulou&#8221;<br />
  [3]=><br />
  string(6) &#8220;Donald&#8221;<br />
  [4]=><br />
  string(6) &#8220;Picsou&#8221;<br />
}</p></blockquote>
<h3>Serialisation  / Deserialisation d’un objet</h3>
<p>Voici maintenant l’exemple le plus intéressant, la sérialisation d’un objet. Prenons une classe basique avec différentes propriétés :</p>
<p><code>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Dormeur <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Age du nain</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* @var integer</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="re0">$_age</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Est-ce qu&#8217;il porte son bonnet ?</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* @var boolean</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="re0">$_aSonBonnet</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Couleur préférée</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* @var String</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">private</span> <span class="re0">$_couleurPreferee</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Hobbies divers</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* *@var Array</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="re0">$_gouts</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Constructeur de la classe</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> __construct<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_age = <span class="nu0">19</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_aSonBonnet = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_couleurPreferee = <span class="st0">&#8216;rouge&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_gouts = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;musique&#8217;</span>,<span class="st0">&#8216;cinéma&#8217;</span>,<span class="st0">&#8216;curling&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p></code></p>
<p><em>(Oui, le nom de la classe vous semblera sans doute débile, mais si je trouvais plutôt de circonstance d’avoir une classe nommée « Dormeur » pour introduire une méthode nommée « __sleep() », ce genre de petites blagues a au moins le mérite de rendre l’écriture de tutoriels un peu plus drôle.)</em></p>
<p>Passons maintenant successivement à son instanciation, sa serialisation et sa deserialisation :</p>
<p><code>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$oDormeur</span> = <span class="kw2">new</span> Dormeur;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$sSerialized</span> = <a href="http://www.php.net/serialize"><span class="kw3">serialize</span></a><span class="br0">&#40;</span><span class="re0">$oDormeur</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$oUnserialized</span> = <a href="http://www.php.net/unserialize"><span class="kw3">unserialize</span></a><span class="br0">&#40;</span><span class="re0">$sSerialized</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;&lt;pre&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$sSerialized</span>,<span class="re0">$oUnserialized</span><span class="br0">&#41;</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">&#8216;&lt;/pre&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p></code></p>
<p>Voici ce que vous affichera le premier var_dump :</p>
<blockquote><p>string(181) &#8220;O:7:&#8221;Dormeur&#8221;:4:{s:7:&#8221; *_age&#8221;;i:19;s:14:&#8221; *_aSonBonnet&#8221;;b:1;s:25:&#8221; Dormeur_couleurPreferee&#8221;;s:5:&#8221;rouge&#8221;;s:6:&#8221;_gouts&#8221;;a:3:{i:0;s:7:&#8221;musique&#8221;;i:1;s:7:&#8221;cinéma&#8221;;i:2;s:7:&#8221;curling&#8221;;}}&#8221;</p></blockquote>
<p>Et voilà ce que vous affichera le deuxième :</p>
<blockquote><p>object(Dormeur)#2 (4) {<br />
  ["_age:protected"]=><br />
  int(19)<br />
  ["_aSonBonnet:protected"]=><br />
  bool(true)<br />
  ["_couleurPreferee:private"]=><br />
  string(5) &#8220;rouge&#8221;<br />
  ["_gouts"]=><br />
  array(3) {<br />
    [0]=><br />
    string(7) &#8220;musique&#8221;<br />
    [1]=><br />
    string(7) &#8220;cinéma&#8221;<br />
    [2]=><br />
    string(7) &#8220;curling&#8221;<br />
  }<br />
}
</p></blockquote>
<p>Vous saviez déjà que le type des variables était préservé, il en va de même pour la visiblité (private, protected et public), cela ne change en aucun cas la structure de la classe. Nous vous parlions de stockage d’instance, il faut bien faire attention à ce que votre classe soit <strong>déclarée avant la désérialisation</strong>, sans quoi vous aurez une erreur :</p>
<blockquote><p>Fatal error: Class &#8216;Dormeur&#8217; not found in /home/path/to/your/script.php on line xx</p></blockquote>
<p>Vous pourrez également remarquer un petit détails sans importance : le premier caractère de la chaine générée par la fonction serialize : « o » lorsqu’il s’agit d’un objet, « i » pour un integer, « a » pour un tableau, etc.</p>
<h3>Méthode magique __sleep() et wakeup()</h3>
<p>Maintenant que nous avons bien saisi le principe de la serialisation, nous allons pouvoir entrer dans le vif du sujet et parler des méthodes magiques __sleep() et __wakeup(). Ces méthodes seront respectivement appelée par votre script lors de l’utilisation de serialize() et de unserialize(). Voici une démonstration, nous allons ajouter les méthodes __sleep() et _wakeup() à notre Dormeur.</p>
<p>La méthode magique __sleep() doit cependant effectuer une action pour que la serialisation se passe bien. C’est ici que l’on peut voir le premier intérêt de la serialization d’une instance de classe : vous allez selectionner quelles propriétés de votre instance vous souhaitez stocker. Pour ce faire, la méthode __sleep() doit retourner un tableau contenant les noms des propriétés à conserver :</p>
<p><code>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span>&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Méthode magique __sleep Appelée lors d&#8217;un serialize</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* @return Array la liste des paramètres à conserver</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> __sleep<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;Bon ben moi, je vais dormir.&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;_age&#8217;</span>,<span class="st0">&#8216;_aSonBonnet&#8217;</span>,<span class="st0">&#8216;_couleurPreferee&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Méthode magique __wakeup Appelée lors d&#8217;un unserialize</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* @return void</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> __wakeup<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;bon ben moi, je vais me faire un café.&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p></code></p>
<p>Ici on ne choisit de garder que l’age de Dormeur, sa couleur préférée et si, ou non, il a son bonnet. En exécutant de nouveau le code précédent, vous allez voir les deux echo s’afficher à la suite («Bon ben moi, je vais dormir. » puis « bon ben moi, je vais me faire un café. ») confirmant que les méthodes __sleep et __wakeup sont successivement appelées, et voici ce que vous affichera le premier var_dump :</p>
<blockquote><p>string(108) &#8220;O:7:&#8221;Dormeur&#8221;:3:{s:7:&#8221;*_age&#8221;;i:19;s:14:&#8221;*_aSonBonnet&#8221;;b:1;s:25:&#8221;Dormeur_couleurPreferee&#8221;;s:5:&#8221;rouge&#8221;;}&#8221;</p></blockquote>
<p>On constate que l’on ne conserve pas les goûts de Dormeur. Et voici ce que vous affichera le deuxième var_dump :</p>
<blockquote><p>object(Dormeur)#2 (4) {<br />
  ["_age:protected"]=><br />
  int(19)<br />
  ["_aSonBonnet:protected"]=><br />
  bool(true)<br />
  ["_couleurPreferee:private"]=><br />
  string(5) &#8220;rouge&#8221;<br />
  ["_gouts"]=><br />
  NULL<br />
}</p></blockquote>
<p>Vous remarquerez que seules les propriétés spécifiées dans le __sleep() ont été mémorisées, la propriété « _gouts », quant à elle, est égale à NULL, son contenu n’a pas été conservé. Bien entendu, l’intérêt ne s’arrête pas là, vous allez pouvoir effectuer les actions que vous désirez dans ces méthodes : synchronisation avec une base de données, fermer une connexion à une base de données lors de la sérialisation, la rouvrir lors de la deserialisation, etc.</p>
<p>Pour les amoureux du bricolage, il est également possible d’<a href="http://palleas.com/2008/02/18/vivement-un-vrai-transtypage-en-php/">implémenter la notion de « transtypage »</a> d&#8217;objet, totalement absente de PHP à l’heure actuelle.</p>
<img src="http://feeds.feedburner.com/~r/palleas/~4/437804324" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://palleas.com/2008/10/31/methodes-magiques-__sleep-et-__wakeup/feed/</wfw:commentRss>
		<feedburner:origLink>http://palleas.com/2008/10/31/methodes-magiques-__sleep-et-__wakeup/</feedburner:origLink></item>
		<item>
		<title>Le clonage d’objets en PHP : méthode magique clone</title>
		<link>http://feeds.feedburner.com/~r/palleas/~3/436742257/</link>
		<comments>http://palleas.com/2008/10/30/le-clonage-d%e2%80%99objets-en-php-methode-magique-clone/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 09:35:04 +0000</pubDate>
		<dc:creator>Palleas</dc:creator>
		
		<category><![CDATA[Développement]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://palleas.com/?p=330</guid>
		<description><![CDATA[PHP depuis sa version 5 implémente des méthodes magiques, que vous pouvez implémenter dans vos classes, et qui seront automatiquement appelées par votre script. La méthode magique __clone() est une de ces méthodes.
Rappels sur la programmation Orientée Objet
Pour bien comprendre le principe de cette méthode et son champ d’application, voici comment marche (dans les grandes [...]]]></description>
			<content:encoded><![CDATA[<p>PHP depuis sa version 5 implémente des <a href="http://fr.php.net/manual/en/language.oop5.magic.php">méthodes magiques</a>, que vous pouvez implémenter dans vos classes, et qui seront automatiquement appelées par votre script. La <a href="http://fr.php.net/__clone">méthode magique __clone()</a> est une de ces méthodes.</p>
<h3>Rappels sur la programmation Orientée Objet</h3>
<p>Pour bien comprendre le principe de cette méthode et son champ d’application, voici comment marche (dans les grandes lignes), la programmation orientée objet.</p>
<p>Prenons un objet « Point » qui dispose des propriétés protégées « _x » et « _y », qui ici correspondront aux coordonnées du point. On y ajoute une méthode setCoords() qui permet de spécifier ces valeurs :</p>
<p><code></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Point <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * Abscisse du point</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @var integer</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="re0">$_x</span> = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * Ordonnée du point</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @var integer</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="re0">$_y</span> = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @name setCoords </span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @description permet de spécifier les coordonnées du point</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @param integer $x : abscisse du point</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @param integer $y : ordonnée du point</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @return void</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> setCoords<span class="br0">&#40;</span><span class="re0">$x</span>,<span class="re0">$y</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_x = <span class="br0">&#40;</span>int<span class="br0">&#41;</span><span class="re0">$x</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_y = <span class="br0">&#40;</span>int<span class="br0">&#41;</span><span class="re0">$y</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p></code></p>
<p>Lorsque je veux utiliser cet objet, j’appelle son constructeur (ici, il est déclaré implicitement) et je vais stocker dans une variable le résultat de cet appel. Ce principe s’appelle l’instanciation, la variable sus-évoquée est une instance de mon objet.</p>
<p><code></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// instanciation de l&#8217;objet Point</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// et stockage de l&#8217;instance dans la variable &quot;oDot&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$oDot</span> = <span class="kw2">new</span> Point;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p></code></p>
<h3>Le clonage d&#8217;instance</h3>
<p>Voilà pour les grandes lignes. Maintenant parlons (désolé) PHP 4. Avec la version 4 de PHP, les objets étaient passés par « valeur », ce qui signifie que si j’avais une variable « $a » contenant l’instance de mon objet point, que si je copiais le contenu de $a dans une variable $b ($b = $a), je me retrouvais avec deux instances distinctes. Avec la version 5, les objets sont passés « par référence », ce qui signifie qu’en effectuant la même opération, les variables $a et $b contiennent la même instance de classe. Voici un exemple.</p>
<p><code></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$oDot</span> = <span class="kw2">new</span> Point;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$oDot</span>-&gt;<span class="me1">setCoords</span><span class="br0">&#40;</span><span class="nu0">10</span>,<span class="nu0">10</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$oDot</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$oNewDot</span> = <span class="re0">$oDot</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$oNewDot</span>-&gt;<span class="me1">setCoords</span><span class="br0">&#40;</span><span class="nu0">20</span>,<span class="nu0">20</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$oDot</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p></code></p>
<p>Ici j’instancie mon objet Point et je stocke l’instance dans la variable $oDot. Je copie le contenu de la variable $oDot dans la variable $oNewDot. Je modifie les propriétés de l’instance de l’objet Point stockée dans $oNewDot et j’affiche les informations de l’instance de mon objet.</p>
<p>Le premier var_dump affichera :</p>
<blockquote><p>object(Point)#1 (2) { ["_x:protected"]=> int(10) ["_y:protected"]=> int(10) }</p></blockquote>
<p>Le deuxième affichera :</p>
<blockquote><p>object(Point)#1 (2) { ["_x:protected"]=> int(20) ["_y:protected"]=> int(20) }</p></blockquote>
<p>Vous pourrez le constater, nous n’avions bien qu’une seule instance de Point.</p>
<p>Seulement voilà, dans certains cas il peut être utile de dupliquer une instance de classe, ce qui est impossible en passant par la méthode « PHP 4 »,  comme nous venons de le voir. La solution est de passer par le mot clé « clone ». Oui, c’est intuitif.</p>
<p>L’utilisation est simple, au lieu de faire :</p>
<p><code>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$oNewDot</span> = <span class="re0">$oDot</span>;</div>
</li>
</ol>
</div>
<p></code></p>
<p>Nous allons faire :</p>
<p><code>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$oNewDot</span> = clone <span class="re0">$oDot</span>;</div>
</li>
</ol>
</div>
<p></code></p>
<p>En modifiant et en exécutant le code précédent :</p>
<p><code>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$oDot</span> = <span class="kw2">new</span> Point;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$oDot</span>-&gt;<span class="me1">setCoords</span><span class="br0">&#40;</span><span class="nu0">10</span>,<span class="nu0">10</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$oDot</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$oNewDot</span> = clone <span class="re0">$oDot</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$oNewDot</span>-&gt;<span class="me1">setCoords</span><span class="br0">&#40;</span><span class="nu0">20</span>,<span class="nu0">20</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$oNewDot</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$oDot</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p></code></p>
<p>Voici l&#8217;affichage du premier var_dump :</p>
<blockquote><p>object(Point)#1 (2) { ["_x:protected"]=> int(10) ["_y:protected"]=> int(10) }</p></blockquote>
<p>Et voici l’affichage du deuxième, on peut constater que les propriétés _x et _y sont biens modifiées :</p>
<blockquote><p>object(Point)#1 (2) { ["_x:protected"]=> int(20) ["_y:protected"]=> int(20) }</p></blockquote>
<p>Voici l’affichage du troisième et dernier var_dump :</p>
<blockquote><p>object(Point)#1 (2) { ["_x:protected"]=> int(10) ["_y:protected"]=> int(10) }</p></blockquote>
<p>Vous le constatez vous-même, nous avons bien deux instances distinctes de la classe Point.</p>
<h3>Implémentation de la méthode magique __clone</h3>
<p>Maintenant que nous avons bien saisi le concept de clonage d’objets en PHP, nous allons enfin pouvoir parler de la méthode magique « __clone ». Le principe de cette méthode est simple, elle va être appelée lorsque l’on utilisera le mot clé clone. Prenons un exemple.</p>
<p>Voici une classe Sheep (mouton, pour les anglophobes) :</p>
<p><code>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Sheep <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * Nom du mouton</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @var String</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="re0">$_name</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * Contructeur de la classe Sheep</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @param String $name nom du mouton</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> __construct<span class="br0">&#40;</span><span class="re0">$name</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_name = <span class="br0">&#40;</span>string<span class="br0">&#41;</span><span class="re0">$name</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * Methode magique clone</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @return void</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> __clone<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;_name = <span class="st0">&#8216;Copie de &#8216;</span>.<span class="re0">$this</span>-&gt;_name;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p></code></p>
<p>Nous allons instancier cet objet, puis dupliquer l’instance :</p>
<p><code>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$oSheep</span> = <span class="kw2">new</span> Sheep<span class="br0">&#40;</span><span class="st0">&#8216;Dolly&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$oNewSheep</span> = clone <span class="re0">$oSheep</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$oSheep</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$oNewSheep</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p></code></p>
<p>Voici ce qu’affiche le premier var_dump :</p>
<blockquote><p>object(Sheep)#3 (1) { ["_name:protected"]=> string(5) &#8220;Dolly&#8221; }</p></blockquote>
<p>Et voici ce qu’affiche le deuxième var_dump :</p>
<blockquote><p>object(Sheep)#4 (1) { ["_name:protected"]=> string(14) &#8220;Copie de Dolly&#8221; }</p></blockquote>
<p>En dupliquant l’instance « $oSheep , ma méthode __clone a été automatiquement appelée et a modifié le nom en rajoutant « Copie de » en préfix du nom du mouton. Vous remarquerez que j’ai bien utilisé $this pour modifier les informations de la nouvelle instance.</p>
<h3>Implémentation dans le cas d’un Singleton.</h3>
<p>Le Singleton est un design pattern permettant de s’assurer de n’avoir qu’une seule instance d’un objet dans un script. Pour plus d’informations, rendez-vous sur <a href="http://www.apprendre-php.com/tutoriels/tutoriel-45-singleton-instance-unique-d-une-classe.html">ce billet</a>.</p>
<p>Seulement, même si votre constructeur est déclaré en accès privé ou protégé, une fois que vous avez récupéré l’instance de votre Singleton, vous aurez toujours la possibilité de la cloner ! Pour pallier à ce problème, il vous suffit de lever une exception lorsque le développeur utilisant votre Singleton décide de le cloner :</p>
<p><code>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Singleton <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * Instance de la classe Singleton</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @var Singleton</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <a href="http://www.php.net/static"><span class="kw3">static</span></a> <span class="re0">$_instance</span> = <span class="kw2">null</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * Constructeur de la classe</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @access protected</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="kw2">function</span> __construct<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * getInstance() : recuperation de l&#8217;instance de la classe</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @return Singleton</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <a href="http://www.php.net/static"><span class="kw3">static</span></a> <span class="kw2">function</span> getInstance<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw2">null</span> === self::<span class="re0">$_instance</span><span class="br0">&#41;</span> self::<span class="re0">$_instance</span> = <span class="kw2">new</span> self;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> self::<span class="re0">$_instance</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * Methode magique clone</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * @return void</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; * */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> __clone<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throw <span class="kw2">new</span> Exception<span class="br0">&#40;</span><span class="st0">&#8216;Are you Trying to clone me ? I<span class="es0">\&#8217;</span>m a Singleton dude !&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</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">try <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$oSingleton</span> = Singleton::<span class="me2">getInstance</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; clone <span class="re0">$oSingleton</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span>catch<span class="br0">&#40;</span>Exception <span class="re0">$e</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></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">&#8216;Oops, exception : &#8216;</span>, <span class="re0">$e</span>-&gt;<span class="me1">getMessage</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>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p></code></p>
<p>Et voici ce qui s’affichera à l’exécution du code :</p>
<blockquote><p>Oops, exception : Are you Trying to clone me ? I&#8217;m a Singleton dude !</p></blockquote>
<img src="http://feeds.feedburner.com/~r/palleas/~4/436742257" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://palleas.com/2008/10/30/le-clonage-d%e2%80%99objets-en-php-methode-magique-clone/feed/</wfw:commentRss>
		<feedburner:origLink>http://palleas.com/2008/10/30/le-clonage-d%e2%80%99objets-en-php-methode-magique-clone/</feedburner:origLink></item>
		<item>
		<title>Bienvenue chez les relous</title>
		<link>http://feeds.feedburner.com/~r/palleas/~3/433410155/</link>
		<comments>http://palleas.com/2008/10/27/bienvenue-chez-les-relous/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 09:40:12 +0000</pubDate>
		<dc:creator>Palleas</dc:creator>
		
		<category><![CDATA[Coup de gueule]]></category>

		<guid isPermaLink="false">http://palleas.com/?p=327</guid>
		<description><![CDATA[Bon aller un court billet sur ce phénomène national ô combien vendeur pour la France : Bienvenue chez les Ch&#8217;tis. Je me souviens avoir vu ce film quand j&#8217;arrivais en Savoie pour mon premier entretien chez NOE. J&#8217;avais ri. C&#8217;était une bonne comédie dans laquelle on n&#8217;a pas besoin de réfléchir, bref, on peut même [...]]]></description>
			<content:encoded><![CDATA[<p>Bon aller un court billet sur ce phénomène national ô combien vendeur pour la France : Bienvenue chez les Ch&#8217;tis. Je me souviens avoir vu ce film quand j&#8217;arrivais en Savoie pour mon premier entretien chez <a href="http://www.noe-interactive.com">NOE</a>. J&#8217;avais ri. C&#8217;était une bonne comédie dans laquelle on n&#8217;a pas besoin de réfléchir, bref, on peut même dire que j&#8217;avais aimé.</p>
<p>Aujourd&#8217;hui, soit quand même 6 mois plus tard, je ne peux plus voir ce film. Matraquage à la télévision parce que &#8220;plus fort que la grande vadrouille&#8221;, les ventes de fromage qui décollent, les touristes qui affluent dans le nord, et j&#8217;en passe. J&#8217;étais à Lyon il y a 3 semaines et en ai profité pour faire un tour au Virgin Megastore. Qu&#8217;est-ce que j&#8217;ai vu ? Un rayon remplit de T-shirts &#8220;Mi chui Ch&#8217;timi&#8221;, des tasses &#8220;Attention à comment qu&#8217;te parle&#8221; et je ne sais plus quelle connerie. Je viens également d&#8217;apprendre qu&#8217;il y avait <a href="http://www.jeuxvideo.com/jeux/0002/00021944.htm">un jeu vidéo</a> (merci <a href="http://www.sp3ud.com/">Sp3ud</a>).</p>
<p>Plus fort encore, je viens d&#8217;apprendre sur le blog de <a href="http://blig.fr/">Cedsib</a> qu&#8217;ils vont sortir <strong>une version allemande du film</strong> !</p>
<p>Tant mieux pour les acteurs, et pour leur succès. Ca m&#8217;amène à une triste constatation : le cinéma français est tellement peuplé de films nazes ou sans intérêt, que dès qu&#8217;un film sort de l&#8217;ordinaire et connait un peu de succès, on insiste dessus.</p>
<p>Bienvenue chez les relous !</p>
<img src="http://feeds.feedburner.com/~r/palleas/~4/433410155" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://palleas.com/2008/10/27/bienvenue-chez-les-relous/feed/</wfw:commentRss>
		<feedburner:origLink>http://palleas.com/2008/10/27/bienvenue-chez-les-relous/</feedburner:origLink></item>
		<item>
		<title>Quand ta passion devient ton boulot…</title>
		<link>http://feeds.feedburner.com/~r/palleas/~3/421498746/</link>
		<comments>http://palleas.com/2008/10/15/quand-ta-passion-devient-ton-boulot/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 11:55:40 +0000</pubDate>
		<dc:creator>Palleas</dc:creator>
		
		<category><![CDATA[Réflexion]]></category>

		<guid isPermaLink="false">http://palleas.com/?p=310</guid>
		<description><![CDATA[Je lisais un billet sur le blog &#8220;Fuck You Billy&#8221; qui m&#8217;a permit de mettre le doigt sur quelque chose qui me trotte dans la tête depuis quelques temps déjà. Voilà la situation : le développement Web me blase. Ce qui me dérange plus que le simple fait d&#8217;être blasé, c&#8217;est être blasé à 21 [...]]]></description>
			<content:encoded><![CDATA[<p>Je lisais un billet sur le blog <a href="http://www.elixie.org">&#8220;Fuck You Billy&#8221;</a> qui m&#8217;a permit de mettre le doigt sur quelque chose qui me trotte dans la tête depuis quelques temps déjà. Voilà la situation : le développement Web me blase. Ce qui me dérange plus que le simple fait d&#8217;être blasé, c&#8217;est être blasé à 21 ans avec seulement deux ans d&#8217;expérience professionnelle <ins>en alternance</ins> dans le domaine.</p>
<p>Il y a encore peu de temps, je me voyais tout à fait devenir développeur Web et coder des sites à longueur de journée. Aujourd&#8217;hui, plus ça va et moins ce domaine m&#8217;attire. Il est normal que ça m&#8217;arrive, ça doit faire 6 ou 7 ans que j&#8217;ai commencé le PHP et j&#8217;ai le sentiment d&#8217;en avoir fait le tour. Bien sur ce n&#8217;est pas le cas, je suis loin de le maitriser à 100%, mais la motivation n&#8217;est plus vraiment au rendez-vous.</p>
<blockquote><p>[...] quand ta passion devient ton boulot, t’as plus de passion.</p></blockquote>
<p>Voilà le problème je pense, le boulot. Le fait de coder la journée pour des sites pas forcément motivant, puisque l&#8217;on se contente de répondre à un besoin du client, rien de plus. Rien de <ins>motivant</ins> en plus, pas de challenge qui donne une grosse bouffée d&#8217;autosatisfaction quand on a réussi à pondre un beau (oui, beau) script de fou pour un problème tordu.</p>
<p>Heureusement pour moi, mon expérience n&#8217;est pas extrêmement diversifiée : PHP/JS/xHTML/CSS, un peu de Java, du Flash AS2 et des bases de C/C++. La solution est donc évidente : découvrir de nouvelles technologies.</p>
<p>J&#8217;ai commencé à me renseigner sur de nouveaux langages et de nouvelles technologies : <a href="http://www.rubyonrails.org/">Ruby On rails</a> est installé sur le serveur, bientôt <a href="http://www.django-fr.org/">Django</a> (<a href="http://www.python.org/">framework</a> python), je fais pas mal de <a href="http://www.adobe.com/fr/products/flex/">Flex</a> (par la même occasion, de Flash AS3) depuis 1 mois et je négocie avec ma directrice technique pour faire du <a href="http://www.adobe.com/fr/products/air/">AIR</a> en entreprise.</p>
<p>Effectivement, ça marche. Je mets donc légèrement en pause le PHP, pour apprendre de nouvelles choses et tenter de me spécialiser, parce que cette introspection m&#8217;a amené à réfléchir sur mon avenir&#8230;</p>
<p>Je sens que je vais me faire taper, mais je n&#8217;ai pas l&#8217;impression qu&#8217;il y ait un réel intérêt à être &#8220;bon&#8221; développeur PHP. PHP n&#8217;est pas un langage vraiment strict, je ne dis pas ça pour troller, mais bien pour dire que finalement un développeur débutant ou un mec codant à l&#8217;arache sauront très bien se débrouiller. Certes, le code sera pourri, mais le site fonctionnera, et pour beaucoup de boites et de clients, ça suffit.</p>
<p>Sur ce je vous laisse, je vais prendre l&#8217;<a href="http://www.adobe.com/fr/products/air/">AIR</a> !</p>
<img src="http://feeds.feedburner.com/~r/palleas/~4/421498746" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://palleas.com/2008/10/15/quand-ta-passion-devient-ton-boulot/feed/</wfw:commentRss>
		<feedburner:origLink>http://palleas.com/2008/10/15/quand-ta-passion-devient-ton-boulot/</feedburner:origLink></item>
		<item>
		<title>Modélisons !</title>
		<link>http://feeds.feedburner.com/~r/palleas/~3/419616788/</link>
		<comments>http://palleas.com/2008/10/13/modelisons/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 15:37:42 +0000</pubDate>
		<dc:creator>Palleas</dc:creator>
		
		<category><![CDATA[Réflexion]]></category>

		<guid isPermaLink="false">http://palleas.com/?p=307</guid>
		<description><![CDATA[Je n&#8217;ai pas fait de premier retour sur la formation. Pour cause, j&#8217;ai l&#8217;impression d&#8217;être tellement fermé vis à vis des matières qui ne sont pas de la programmation (Gestion de projet, communication&#8230;) que je doute un peu de la pertinence de ce que je pourrais dire. Il y a cependant une matière, ou même [...]]]></description>
			<content:encoded><![CDATA[<p>Je n&#8217;ai pas fait de premier retour sur la formation. Pour cause, j&#8217;ai l&#8217;impression d&#8217;être tellement fermé vis à vis des matières qui ne sont pas de la programmation (Gestion de projet, communication&#8230;) que je doute un peu de la pertinence de ce que je pourrais dire. Il y a cependant une matière, ou même un domaine (allez soyons fou) qui m&#8217;intrigue sérieusement : la conception / modélisation.</p>
<p>Je crois avoir eu quelque chose comme 13 heures de &#8220;modélisation&#8221;, et j&#8217;avoue que je ne comprends toujours pas l&#8217;intérêt de la plupart des modèles. Bon, un peu de parcimonie quand même, je vois très bien l&#8217;intérêt des diagrammes UML. Pour tout ce qui est représentation des classes, des compositions et agrégations, là c&#8217;est important.</p>
<p>A contrario, quand je vois les &#8220;use cases&#8221;, les &#8220;diagrammes de séquences&#8221; avec des flèches qui partent dans tous les sens, certaines pleines, d&#8217;autres en pointillées avec des &#8220;extends&#8221; ou des &#8220;include&#8221;, et j&#8217;en passe. Rien de réellement &#8220;human-readable&#8221; ou, au moins, &#8220;Romain-readable&#8221; parce que personnellement, je suis convaincu que je mettrais moins de temps à comprendre une liste à puce avec &#8220;tel élément fait ça&#8221;&#8230;</p>
<p>J&#8217;ai plutôt l&#8217;impression d&#8217;être bloqué dans un gros consensus antiproductif, avec le premier gars, forcément plus malin que tout le monde, qui a proposé des diagrammes façon &#8220;p*tain les gars regardez ce que j&#8217;ai fait!&#8221; et que tout le monde a trouvé ça cool à l&#8217;époque. Seulement voilà, aujourd&#8217;hui tout le monde se rend compte que c&#8217;est inutile, mais personne n&#8217;ose le dire de peur d&#8217;être mis à l&#8217;écart du groupe.</p>
<p>Après, j&#8217;ai probablement tort vu que mon expérience de développeur se limite majoritairement à du web. Je laisse au temps le soin de me convaincre !</p>
<img src="http://feeds.feedburner.com/~r/palleas/~4/419616788" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://palleas.com/2008/10/13/modelisons/feed/</wfw:commentRss>
		<feedburner:origLink>http://palleas.com/2008/10/13/modelisons/</feedburner:origLink></item>
		<item>
		<title>Orange veut vous parler</title>
		<link>http://feeds.feedburner.com/~r/palleas/~3/419473528/</link>
		<comments>http://palleas.com/2008/10/13/orange-veut-vous-parler/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 12:22:28 +0000</pubDate>
		<dc:creator>Palleas</dc:creator>
		
		<category><![CDATA[Nawak]]></category>

		<guid isPermaLink="false">http://palleas.com/?p=303</guid>
		<description><![CDATA[
- Orange : &#8220;Bonjour, je parle bien à Mr Pou&#8230; Pouchlet Romain ?&#8221;
- Moi : &#8220;Euh, c&#8217;est Pouclet en fait&#8221;
- Orange : &#8220;Bonjour M. Pouclet, je vous appelle pour vous proposer une offre extrêmement intéressante [...]&#8220;
- Moi : &#8220;C&#8217;est bien la TV illimitée et tout, mais mon téléphone ne le fait pas donc on pourra [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
- Orange : &#8220;Bonjour, je parle bien à Mr Pou&#8230; Pouchlet Romain ?&#8221;<br/><br />
- Moi : &#8220;Euh, c&#8217;est Pouclet en fait&#8221;<br/><br />
- Orange : &#8220;Bonjour M. Pouclet, je vous appelle pour vous proposer une offre extrêmement intéressante [...]&#8220;<br/><br />
- Moi : &#8220;C&#8217;est bien la TV illimitée et tout, mais mon téléphone ne le fait pas donc on pourra en reparler quand j&#8217;en aurais un&#8230;&#8221;<br/><br />
- Orange : &#8220;Ah oui d&#8217;accord, je me permets de vous demander si vous êtes satisfait du service que vous avez chez Orange depuis 2005 ?&#8221;<br/><br />
- Moi : &#8220;oh bah moi je me suis fait jeter quand j&#8217;ai voulu un iphone, donc&#8230;&#8221;<br/><br />
- Orange : &#8220;Ah oui d&#8217;accord, mais moi je ne suis là que pour vous proposer une offre extrêmement intéressante. Dernière question, avez vous une livebox ?&#8221;<br/><br />
- Moi : &#8220;non, et je n&#8217;ai pas vraiment l&#8217;intention de changer&#8221;<br/><br />
- Orange : &#8220;et bien dans ce cas notre entretien se termine ici, Orange et moi même vous souhaitons une bonne journée.&#8221;
</p></blockquote>
<p>J&#8217;suis vraiment un mauvais client. Au prochain appel, je tente de négocier des points tiens, il parait que ça marche en fin de contrat&#8230;</p>
<img src="http://feeds.feedburner.com/~r/palleas/~4/419473528" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://palleas.com/2008/10/13/orange-veut-vous-parler/feed/</wfw:commentRss>
		<feedburner:origLink>http://palleas.com/2008/10/13/orange-veut-vous-parler/</feedburner:origLink></item>
		<item>
		<title>Don’t tell me, tell my ghost</title>
		<link>http://feeds.feedburner.com/~r/palleas/~3/418401229/</link>
		<comments>http://palleas.com/2008/10/12/dont-tell-me-tell-my-ghost/#comments</comments>
		<pubDate>Sun, 12 Oct 2008 07:51:51 +0000</pubDate>
		<dc:creator>Palleas</dc:creator>
		
		<category><![CDATA[Egocentrisme]]></category>

		<guid isPermaLink="false">http://palleas.com/?p=298</guid>
		<description><![CDATA[Ben moi j&#8217;ai un T-shirt comme ça !
Personnellement je ne me souviens même pas comment nous sommes arrivés à la salle de concert (le transbordeur, à Villeurbannes), tout perdu que nous étions. A tourner complètement au hasard, nous avons fini par demander notre chemin : &#8220;Ah bah c&#8217;est tout droit, à 5 minutes&#8221;.
Il faut savoir [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center"><img alt="" src="http://www.spirit-of-metal.com/les%20goupes/I/In%20Flames/pics/326405_logo.jpg" title="Inflames" width="338" height="200" /><br/>Ben moi j&#8217;ai un T-shirt comme ça !</p>
<p>Personnellement je ne me souviens même pas comment nous sommes arrivés à la salle de concert (le transbordeur, à Villeurbannes), tout perdu que nous étions. A tourner complètement au hasard, nous avons fini par demander notre chemin : &#8220;Ah bah c&#8217;est tout droit, à 5 minutes&#8221;.</p>
<p>Il faut savoir qu&#8217;à l&#8217;origine, on devait se rendre au concert à 4 : deux collègues, mon patron et moi. Seulement, à 13h le patron appelle pour nous dire qu&#8217;il est malade, à 15h le deuxieme collègue dit qu&#8217;il n&#8217;a plus vraiment envie d&#8217;y aller. Nous nous retrouvons donc seuls, Clément et moi. Plus important encore, nous nous retrouvons seuls, sans GPS.</p>
<p> Hier soir, concert de Inflames, Gojira et Sonic syndicate, une soirée que je qualifierai d&#8217;orgasmique si je n&#8217;avais pas peur que certains pervers de mon (pauvre) lectorat (restreint) n&#8217;en fasse des blagues. Mais passons.</p>
<p>La première partie était un groupe que je ne connaissais d&#8217;à peine 2 jours, car je m&#8217;étais renseigné dessus. D&#8217;après lastfm c&#8217;est un groupe de &#8220;death metal&#8221;, Clément m&#8217;a parlé de &#8220;Screamo&#8221;, je n&#8217;ai jamais été bon pour retenir les genres de tel ou tel morceau de toutes façon. Ils ont pu nous faire quelque chose comme 5 (très bons) morceaux, une très bonne introduction pour cette soirée.</p>
<p>Personnellement je commence à travailler sur une théorie ô combien scientifique qui tend à prouver que les bassistes (de sexe féminin, désolé Rykian) sont vraiment trop mignonnes en général. Ce postulat repose pour l&#8217;instant sur deux cas : la bassiste d&#8217;Aqme, et celle de Sonic Syndicate. Il va donc falloir que je continue les concerts dans les prochaines semaines si je veux avoir une chance de décrocher un prix.</p>
<p>J&#8217;espère qu&#8217;on vous confisqué vos pierres en arrivant sur le blog car j&#8217;ai peur de me faire lapider en avouant que je n&#8217;ai pas vraiment aimé Gojira. Je connaissais un peu le groupe et j&#8217;avoue que j&#8217;aimais bien mais là, non. Le son avait l&#8217;air tellement saturé que la voix du chanteur ne passait pas au dessus de la musique, même pas un peu, et j&#8217;ai plus eu l&#8217;impression d&#8217;assister à bruit permanent qu&#8217;à un vrai concert. Problème de réglage de son, ou peut être que je n&#8217;étais tout simplement pas en phase avec ce groupe ce soir, tant pis!</p>
<p>Une legère pause, des acouphènes et une bière absolument dégueulasse (coupée à la sueur ou je ne sais pas quoi) plus tard, sont arrivés In Flames. Honnêtement, ils savent bien se faire désirer ces cons là, parce que l&#8217;attente a été longue, mais ô combien méritée. Pour essayer de vous faire imaginer le truc, un énorme voile blanc cachait la scène alors que le groupe arrivait avec &#8220;The Chosen Pessimist&#8221;. D&#8217;un coup la musique part, le drap tombe et le concert commence.</p>
<p>Bon je ne suis pas vraiment doué pour les critiques musicales, du coup pour les morceaux, vous devrez vous contenter de savoir que j&#8217;ai adoré chacun des morceaux. J&#8217;ai cependant été plus marqué par le chanteur en lui même et différentes &#8220;blagues&#8221; qu&#8217;il a pu sortir alors qu&#8217;il introduisait ses chansons :</p>
<p>Pour la première fois ou il prenait la parole, l&#8217;un des guitaristes sort un rift aigu me rappelant un peu la super nintendo (ne me demandez pas pourquoi), éclats de rire dans la salle :</p>
<blockquote><p>
-Well, it&#8217;s a new right of our&#8230; We still don&#8217;t know how we are going to use it but&#8230;
</p></blockquote>
<p>Pour introduire &#8220;Delight and Angers&#8221; :</p>
<blockquote><p>
- This song is about ladies, woman and girls. You know, we love you, we really do. But sometimes, you are pain in the ass (quelques sifflets dans la salle ^^)
</p></blockquote>
<p>Un problème de son avec l&#8217;un des guitaristes, légère pause dans le concert pendant que le technicien réparait ça :</p>
<blockquote><p>
- Hey, this is Greg, our sound engeneer (je crois), everybody says &#8220;Hi, Greg !&#8221;<br/><br />
What are you doing on stage Greg ?
</p></blockquote>
<p>Avant la fin :</p>
<blockquote><p>
- We sometimes check what you&#8217;re writing on our homepage, we really do. You always say &#8220;you should do that song, or that one, or that one&#8221;, we&#8217;d like to stay here for ever and ever, but we can&#8217;t<br/><br />
Especially for you, we are gonna play new songs and if you don&#8217;t move on this, or these, song(s), we will never play them again !
</p></blockquote>
<p>Je n&#8217;ai pas tout retenu, mais l&#8217;ambiance était vraiment là, le groupe clairement à la hauteur et ouvert au public. J&#8217;ai plusieurs fois éclaté de rire, j&#8217;ai pas mal bougé bref une soirée qu&#8217;il me tarde de renouveler. Début novembre Epica, fin novembre (peut-être) Satyricon, et sans doute d&#8217;autres d&#8217;ici là.</p>
<p>Sur ce je vous laisse, j&#8217;ai une dizaine d&#8217;albums d&#8217;In Flames à écouter pour essayer de retrouver l&#8217;ambiance d&#8217;hier soir&#8230;</p>
<img src="http://feeds.feedburner.com/~r/palleas/~4/418401229" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://palleas.com/2008/10/12/dont-tell-me-tell-my-ghost/feed/</wfw:commentRss>
		<feedburner:origLink>http://palleas.com/2008/10/12/dont-tell-me-tell-my-ghost/</feedburner:origLink></item>
	</channel>
</rss>
