<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://mirmodynamics.com/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Mirmo Dynamics - Tag - phpmailer</title>
  <link>http://mirmodynamics.com/</link>
  <atom:link href="http://mirmodynamics.com/feed/tag/phpmailer/rss2" rel="self" type="application/rss+xml"/>
  <description>Si tu kiffes pas reunoi, t'écoutes pas et puis c'est tout.</description>
  <language>en</language>
  <pubDate>Sun, 14 Mar 2010 19:59:01 +0100</pubDate>
  <copyright>2003-2009 &amp;copy; Geoffrey Bachelet</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Intégrer une librairie tierce</title>
    <link>http://mirmodynamics.com/post/2006/09/06/Integrer-une-librairie-tierce</link>
    <guid isPermaLink="false">urn:md5:b7c80f8c23ebbc4e829967932241ecde</guid>
    <pubDate>Wed, 06 Sep 2006 23:21:00 +0200</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Coding</category>
        <category>librairie</category><category>organisation</category><category>phpmailer</category><category>tiers</category><category>zend framework</category>    
    <description>&lt;p&gt;Il arrive forcément un moment dans un projet où le besoin de fonctionnalités avancées dans un domaine particulier (mail, réseau, etc) se fait sentir. En général, l'utilisation d'une librairie tierce s'avère nécessaire et pose quelques légers et irritants problèmes, particulièrement au niveau de la convention de nommage des classes et de l'arborescence des répertoires qui devient rapidement bordélique. Nos objectifs seront donc:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Utiliser une librairie tierce&lt;/li&gt;
&lt;li&gt;Respecter la convention de nommage Zend&lt;/li&gt;
&lt;li&gt;Avoir un arborescence propre&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ça tombe bien, c'est très simple à réaliser :-)&lt;/p&gt;    &lt;p&gt;Pour ce faire, il convient de prendre nos objectifs à rebours, commençons donc par l'arborescence. Nous allons classer nos librairies par site, ce qui est une méthode assez courante. Admettons que vous ayez une arborescence de base (plus de précisions sur l'arboresence basique dans un prochain article):&lt;/p&gt;


&lt;pre&gt;app/
library/
	Zend/
	Zend.php
www/&lt;/pre&gt;


&lt;p&gt;Nous allons stocker nos librairies dans &lt;code&gt;library/ext/&lt;/code&gt;, comme &lt;strong&gt;ext&lt;/strong&gt;erne, et en fonction du domaine où on peut les trouver. Prenons le cas de l'excellent &lt;code&gt;PHPMailer&lt;/code&gt;, qui est hébergé sur http://phpmailer.sourceforge.net/. Nous stockerons cette librairie dans &lt;code&gt;library/ext/net/sourceforge/phpmailer/&lt;/code&gt;, ce qui résoud la problèmatique de l'arborescence.&lt;/p&gt;


&lt;p&gt;Pour attaquer la 2ème problèmatique (convention de nommage), nous allons créer un nouveau répertoire dans &lt;code&gt;library&lt;/code&gt; qui contiendra nos extensions au framework. Ce répertoire nous sera très utile par la suite. Nous l'appellerons ici &lt;code&gt;Extensions&lt;/code&gt;, mais cela peut-être n'importe quel nom qui peut vous sembler approprié, &lt;code&gt;Monappli&lt;/code&gt; par exemple. Une fois ce répertoire créé, nous pouvons passer aux choses sérieuses, et créer notre classe &lt;code&gt;Extensions_Mailer&lt;/code&gt; dans &lt;code&gt;library/Extensions/Mailer.php&lt;/code&gt;:&lt;/p&gt;


&lt;pre&gt;require_once dirname(__FILE__).'/../ext/net/sourceforge/phpmailer/class.phpmailer.php';

class Extensions_Mailer extends PHPMailer {

}&lt;/pre&gt;


&lt;p&gt;Et voilà, tous nos problèmes sont résolus. Notre classe est désormais reconnue par &lt;code&gt;Zend::loadClass&lt;/code&gt;, ce qui finalement était bien le but de l'opération:&lt;/p&gt;


&lt;pre&gt;Zend::loadClass('Extensions_Mailer');
$mailer = new Extensions_Mailer;&lt;/pre&gt;


&lt;p&gt;L'objet &lt;code&gt;$mailer&lt;/code&gt; est donc une instance de &lt;code&gt;Extensions_Mailer&lt;/code&gt;, qui n'est finalement que la classe &lt;code&gt;PHPMailer&lt;/code&gt; renommée ! Cela permet également au passage de surclasser &lt;code&gt;PHPMailer&lt;/code&gt; pour y ajouter nos propres fonctions.&lt;/p&gt;</description>
    
    
    
          <comments>http://mirmodynamics.com/post/2006/09/06/Integrer-une-librairie-tierce#comment-form</comments>
      <wfw:comment>http://mirmodynamics.com/post/2006/09/06/Integrer-une-librairie-tierce#comment-form</wfw:comment>
      <wfw:commentRss>http://mirmodynamics.com/feed/atom/comments/593</wfw:commentRss>
      </item>
    
</channel>
</rss>