<?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>Tellaw.org &#187; objets</title>
	<atom:link href="http://www.tellaw.org/tag/objets/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tellaw.org</link>
	<description>La technologie doit devenir simple...</description>
	<lastBuildDate>Fri, 02 Apr 2010 14:48:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Les méthodes « magiques » en PHP5</title>
		<link>http://www.tellaw.org/2008/05/16/les-methodes-%c2%ab-magiques-%c2%bb-en-php5/</link>
		<comments>http://www.tellaw.org/2008/05/16/les-methodes-%c2%ab-magiques-%c2%bb-en-php5/#comments</comments>
		<pubDate>Fri, 16 May 2008 11:45:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[objets]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.tellaw.org/?p=53</guid>
		<description><![CDATA[PHP5 apporte à PHP les fondements de la programmation objet. PHP5 apporte un certain nombre de méthodes utilisables dans les Objets afin d’automatiser certaines taches, ou intercepter des appels à des méthodes / propriétés inexistantes… D’un point de vue architecture c’est une mauvaise pratique que de se baser sur ces méthodes, ca reste dans certains [...]]]></description>
			<content:encoded><![CDATA[<p>PHP5 apporte à PHP les fondements de la programmation objet. PHP5 apporte un certain nombre de méthodes utilisables dans les Objets afin d’automatiser certaines taches, ou intercepter des appels à des méthodes / propriétés inexistantes… D’un point de vue architecture c’est une mauvaise pratique que de se baser sur ces méthodes, ca reste dans certains cas d’exceptions, très pratique</p>
<p><span id="more-53"></span></p>
<p class="MsoNormal">Liste des méthodes « magiques » en PHP5 :</p>
<ul type="disc">
<li class="MsoNormal"><strong>__construct()</strong></li>
<li class="MsoNormal"><strong>__destruct()</strong></li>
<li class="MsoNormal"><strong>__set()</strong></li>
<li class="MsoNormal"><strong>__get()</strong></li>
<li class="MsoNormal"><strong>__call()</strong></li>
<li class="MsoNormal"><strong>__toString()</strong></li>
<li class="MsoNormal"><strong>__sleep()</strong></li>
<li class="MsoNormal"><strong>__wakeup()</strong></li>
<li class="MsoNormal"><strong>__isset()</strong></li>
<li class="MsoNormal"><strong>__unset()</strong></li>
<li class="MsoNormal"><strong>__autoload()</strong></li>
<li class="MsoNormal"><strong>__clone()</strong></li>
</ul>
<p><strong>__construct()</strong><br />
Cette méthode est appelée lors de la construction d’un objet.</p>
<p><strong>__destruct()</strong><br />
Cette méthode est appelée lors de la destruction d’un objet.</p>
<p><strong>__set()</strong><br />
Cette méthode est appelée automatiquement lors de l’assignation d’une valeur à un attribut inexistant.</p>
<p><strong>__get()</strong><br />
Cette méthode est appelée automatiquement lors de la lecture d’une valeur à un attribut inexistant.</p>
<p><strong>__call()</strong><br />
Cette méthode est appelée automatiquement lors de l’appel à une méthode inexistante.</p>
<p><strong>__toString()</strong><br />
Cette méthode est appelée lors de la tentative d’interprétation d’un objet en String. (via un echo ou print…)</p>
<p><strong>__sleep()</strong><br />
Cette méthode sert à la sérialisation d’un objet en PHP5. Elle doit définir la façon dont PHP doit le sérialiser.</p>
<p><strong>__wakeup()</strong><br />
Cette méthode doit définir la dé-sérialisation d’un objet en PHP5.</p>
<p><strong>__isset()</strong><br />
Cette méthode est utilisée lors de la vérification de l’existence d’un attribut via un appel à la méthode « isset »..</p>
<p><strong>__unset()</strong><br />
Méthode appelée lors de la destruction de l’objet.<span lang="EN-GB"></span></p>
<p><strong>__autoload()</strong><br />
Cette méthode est appelée lorsque vous essayez de charger un objet dans un fichier séparé sans l’avoir précédemment chargé via un include, include_once, require ou require_once. <span lang="EN-GB"></span></p>
<p><strong><span style="font-size: 12pt;">__clone()</span></strong><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;;"><br />
cette méthode définie la façon de cloner un objet.</span><br />
<br/><br />
<strong>Exemple :</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php"> <span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">class</span> MyClass <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #ff0000">$Name</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __set<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000">$var</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000">$val</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
             <span style="color: #000066;">echo</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;La propriétée : &quot;</span><span style="color: #66cc66;">.</span><span style="color: #ff0000">$var</span><span style="color: #66cc66;">.</span><span style="color: #ff0000;">&quot; - Valeur : &quot;</span><span style="color: #66cc66;">.</span><span style="color: #ff0000">$val</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #ff0000">$systemvars</span> <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MyClass<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
    <span style="color: #ff0000">$systemvars</span><span style="color: #66cc66;">-&gt;</span><span style="color: #006600;">adminEmail</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'toto@toto.fr'</span><span style="color: #66cc66;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Ceci résulte dans la sortie suivante :</p>

<div class="wp_syntax"><div class="code"><pre class="text">        La propriétée : adminEmail - Valeur : toto@toto.fr</pre></div></div>

<p><br/><br />
<b>Ce n&#8217;est pas une bonne pratique !</b><br/><br />
En effet, à part dans des cas isolés, il est fortement recommendé de definir clairement vos bean, avec des propriétées, des setters et des getters.<br />
<br/><br />
<b>La bonne pratique voudrait :</b><br/></p>

<div class="wp_syntax"><div class="code"><pre class="php"> <span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">class</span> MyClass <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #ff0000">$adminEmail</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setAdminEmail <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000">$var</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
             <span style="color: #ff0000">$this</span><span style="color: #66cc66;">-&gt;</span><span style="color: #006600;">adminEmail</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000">$var</span><span style="color: #66cc66;">;</span>
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getAdminEmail<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
             <span style="color: #b1b100;">return</span> <span style="color: #ff0000">$this</span><span style="color: #66cc66;">-&gt;</span><span style="color: #006600;">adminEmail</span><span style="color: #66cc66;">;</span>
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #ff0000">$systemvars</span> <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MyClass<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
    <span style="color: #ff0000">$systemvars</span><span style="color: #66cc66;">-&gt;</span><span style="color: #006600;">setAdminEmail</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'toto@toto.fr'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Il est important pour la pérennité du code de respecter les bonnes pratiques, mais parfois, il faut être flexible, voila l&#8217;idée de cet article.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tellaw.org/2008/05/16/les-methodes-%c2%ab-magiques-%c2%bb-en-php5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
