<?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>Jérôme Tamarelle &#187; PHP</title>
	<atom:link href="http://jerome.tamarelle.net/blog/indice/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://jerome.tamarelle.net/blog</link>
	<description>I share so I am</description>
	<lastBuildDate>Sat, 17 Jul 2010 21:41:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Configurer WAMP avec PHP 5.3.1 pour Symfony 2.0</title>
		<link>http://jerome.tamarelle.net/blog/2010/03/configurer-wamp-avec-php-5-3-1-pour-symfony-2-0/</link>
		<comments>http://jerome.tamarelle.net/blog/2010/03/configurer-wamp-avec-php-5-3-1-pour-symfony-2-0/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 06:20:17 +0000</pubDate>
		<dc:creator>Jérôme</dc:creator>
				<category><![CDATA[Applications web]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[WAMP]]></category>

		<guid isPermaLink="false">http://jerome.tamarelle.net/blog/?p=126</guid>
		<description><![CDATA[Symfony 2 va révolutionner le développement web. Sa nouvelle architecture et sa flexibilité permettront une prise en main plus rapide, une réutilisation de code plus facile et des performances adaptées à la taille de chaque application. Le nouveau framework est en développement, mais si comme moi vous voulez explorer les fonctionnalités de ce trésor, voici [...]]]></description>
			<content:encoded><![CDATA[<p>Symfony 2 va révolutionner le développement web. Sa nouvelle architecture et sa flexibilité permettront une <a title="Quick Tour" href="http://symfony-reloaded.org/learn">prise en main plus rapide</a>, une <a title="The Bundles" href="http://symfony-reloaded.org/quick-tour-part-4">réutilisation de code plus facile</a> et des performances adaptées à la taille de chaque application.</p>
<p>Le nouveau framework est en développement, mais si comme moi vous voulez explorer les fonctionnalités de ce trésor, voici comment bien démarrer sous Windows.</p>
<p>Le<a title="Télécharger Symfony 2.0" href="http://symfony-reloaded.org/code"> pack d'installation</a> fournit un fichier check.php permettant de vérifier la compatibilité de votre environnement PHP avec les pré-requis du nouveau framework.</p>
<p>La <a title="WAMP Server" href="http://www.wampserver.com/">distribution WAMP</a> correspond quasiment à la configuration suggérée pour Symfony 2.0 (dans la version dev du 10/03/2010 en tout cas).</p>
<div id="attachment_127" class="wp-caption aligncenter" style="width: 246px"><a href="http://jerome.tamarelle.net/blog/wp-content/uploads/2010/03/symfony2-requirements.png"><img class="size-medium wp-image-127" title="symfony2-requirements" src="http://jerome.tamarelle.net/blog/wp-content/uploads/2010/03/symfony2-requirements-236x299.png" alt="Pré-requis Symfony 2.0" width="236" height="299" /></a><p class="wp-caption-text">Symfony 2.0 requière PHP 5.3.1 alors que WAMP propose par défaut la 5.3.0</p></div>
<p>Contrairement à <a title="Why will Symfony 2.0 finally use PHP 5.3" href="http://www.symfony-project.org/blog/2009/10/27/why-will-symfony-2-0-finally-use-php-5-3">ce qui avait été annoncé</a>, c'est PHP 5.3.1 qui est recommandé au lieu de la 5.3.0 (voir <a title="PHP 5.3.1 Released!" href="http://www.php.net/archive/2009.php#id2009-11-19-1">changelog</a>).</p>
<p><span id="more-126"></span></p>
<span id="Installation_de_WAMP"><h1>Installation de WAMP</h1></span>
<p style="text-align: center;"><strong>Pour installer PHP 5.3.1 sous WAMP, téléchargez simplement l'</strong><a title="Télécharger l'add-on PHP 5.3.1 pour WAMP" href="http://www.wampserver.com/addons_php.php"><strong>add-on éponyme</strong></a><strong>.</strong></p>
<p>Lorsque l'installation est terminée, il vous faut sélectionner cette version de PHP dans le menu contextuel de WAMP (icône en bas à droite) :<br />
<strong><img src="http://jerome.tamarelle.net/blog/wp-content/uploads/2010/03/icone_wamp.png" alt="WAMP" width="16" height="11" /> &gt; PHP &gt; Version &gt; 5.3.1</strong></p>
<p><a href="http://jerome.tamarelle.net/blog/wp-content/uploads/2010/03/wamp-version-php.png"><img class="aligncenter size-full wp-image-128" title="wamp-version-php" src="http://jerome.tamarelle.net/blog/wp-content/uploads/2010/03/wamp-version-php.png" alt="" width="340" height="266" /></a></p>
<p style="text-align: left;">Si vous utilisez Propel, il vous faut aussi activer l'extension XSL (optionnel) :<br />
<strong><img src="http://jerome.tamarelle.net/blog/wp-content/uploads/2010/03/icone_wamp.png" alt="WAMP" width="16" height="11" /> &gt;PHP &gt; PHP extensions &gt; php_xsl</strong></p>
<span id="Installation_de_APC_acclrateur"><h1><strong>Installation de APC (accélérateur)</strong></h1></span>
<p>Même pour le développement il est intéressant d'améliorer les performances d'exécution de PHP. Pour cela on peut installer l'accélérateur APC.</p>
<p style="text-align: center;"><strong>Téléchargez la dll de APC : </strong><strong><a title="APC.dll pour PHP 5.3.1" href="http://downloads.php.net/pierre/php_apc-5.3-svn20100226-vc9-x86.zip">php_apc-5.3-svn20100226-vc9-x86.zip</a> </strong></p>
<p>Extraire le contenu de l'archive dans <strong>C:\wamp\bin\php\php5.3.1\ext</strong></p>
<p>Modifiez le fichier php.ini : <strong><img src="http://jerome.tamarelle.net/blog/wp-content/uploads/2010/03/icone_wamp.png" alt="WAMP" width="16" height="11" /> &gt; PHP &gt; php.ini</strong></p>
<pre class="brush: plain;">
extension=php_xsl.dll
;extension=php_zip.dll
extension=php_apc.dll
</pre>
<span id="Alias_Apache_et_rewrite"><h1><strong>Alias Apache et rewrite</strong></h1></span>
<p>Si vous souhaitez déposer votre code en dehors du répertoire www de WAMP, il vous faut créer un Alias :<br />
<strong><img src="http://jerome.tamarelle.net/blog/wp-content/uploads/2010/03/icone_wamp.png" alt="WAMP" width="16" height="11" /> &gt; Apache &gt; Alias directories &gt; Add an alias</strong></p>
<p>Dans l'invite de commande, saisissez le nom de votre alias (par exmple : symfony2) puis l'emplacement du répertoire web de votre installation. Pensez à utiliser des slash (/) comme séparateur et à mettre un slash à la fin (par exemple : C:/Programmation/Symfony2/web/).</p>
<p>Il est aussi conseillé d'activer le module rewrite de Apache :<br />
<strong><img src="http://jerome.tamarelle.net/blog/wp-content/uploads/2010/03/icone_wamp.png" alt="WAMP" width="16" height="11" /> &gt; Apache &gt; Apache modules &gt; rewrire_module</strong></p>
<p>Accédez maintenant à la page <a href="http://localhost/symfony2/">http://localhost/symfony2/</a>. Une page indiquant que Symfony est correctement installé doit s'afficher. Si vous avez une erreur du type "fichier *index.php non trouvé", modifiez le fichier .htaccess :</p>
<pre class="brush: plain;">
 &lt;IfModule mod_rewrite.c&gt;
  RewriteEngine On
  RewriteBase /symfony2
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php [QSA,L]
 &lt;/IfModule&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jerome.tamarelle.net/blog/2010/03/configurer-wamp-avec-php-5-3-1-pour-symfony-2-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Détecter le contexte d&#8217;exécution sous Symfony</title>
		<link>http://jerome.tamarelle.net/blog/2010/01/detecter-le-contexte-dexecution-sous-symfony/</link>
		<comments>http://jerome.tamarelle.net/blog/2010/01/detecter-le-contexte-dexecution-sous-symfony/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 22:00:42 +0000</pubDate>
		<dc:creator>Jérôme</dc:creator>
				<category><![CDATA[Applications web]]></category>
		<category><![CDATA[astuces]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://jerome.tamarelle.net/blog/2010/01/75/</guid>
		<description><![CDATA[Lorsqu'on développe avec le framework Symfony, ou plus généralement en PHP, il est parfois nécessaire de connaitre le contexte dans lequel est exécuté le code pour adapter les actions effectuées. Ainsi, il est possible d'identifier au moins 4 contextes d'appel pour lesquels je vous propose une méthode de détection : Depuis la console (communément appelé [...]]]></description>
			<content:encoded><![CDATA[<p>Lorsqu'on développe avec le framework Symfony, ou plus généralement en PHP, il est parfois nécessaire de connaitre le contexte dans lequel est exécuté le code pour adapter les actions effectuées. Ainsi, il est possible d'identifier au moins 4 contextes d'appel pour lesquels je vous propose une méthode de détection :</p>
<ol>
<li>Depuis la console (communément appelé CLI)</li>
<li>Depuis une adresse locale (localhost)</li>
<li>Depuis une requête AJAX (ou XMLHttpRequest JavaScript)</li>
<li>En mode debug</li>
<li>Contexte d'exécution</li>
</ol>
<p><span id="more-75"></span></p>
<span id="Dtecter_la_console_PHP"><h2><a name="CLI"></a>1. Détecter la console PHP</h2></span>
<p>La fonction <code><a title="Documentation PHP" href="http://php.net/manual/fr/function.php-sapi-name.php">php_sapi_name</a></code> retourne le type d'interface utilisée, par exemple "cli" ou "cgi". En analysant la valeur retournée par cette fonction vous pouvez donc facilement détecter une exécution dans la console PHP. Dans Symfony, ce sont les tâches qui sont généralement exécutées par cette interface.</p>
<pre class="brush: php;">
if(php_sapi_name() == 'cli')
{
  // Code exécuté uniquement lorsque le script est appelé en ligne de commande (cli).
}
</pre>
<span id="Dtecter_une_adresse_locale"><h2><a name="local"></a>2. Détecter une adresse locale</h2></span>
<p>Symfony fait déjà cette détection par défaut dans le fichier app_dev.php pour empêcher l'exécution de l'application en mode debug depuis d'extérieur. Les adresses 127.0.0.1 et ::1 sont les adresses IP v4 et v6 normalisées de rebouclage sur la machine locale, la condition ci-dessous vérifie que la requête est transmise depuis l'une de ces deux adresses.</p>
<pre class="brush: php;">
if (in_array($this-&gt;getRequest()-&gt;getRemoteAddress(), array('127.0.0.1', '::1')))
{
  // Code exécuté uniquement lorsque l'application est exécutée depuis une adresse locale.
}
</pre>
<span id="Dtecter_requte_AJAX"><h2><a name="XMLHttpRequest"></a>3. Détecter requête AJAX</h2></span>
<p>Parmi les fonctionnalités magiques de Symfony, vous pouvez appelé la fonction <code><a title="API Symfony" href="http://www.symfony-project.org/api/1_4/sfWebRequest#method_isxmlhttprequest">sfWebRequest::isXmlHttpRequest()</a></code> depuis vos sfAction(s). Vous saurez alors si la page a été appelée depuis JavaScript.</p>
<pre class="brush: php;">
if($this-&gt;getRequest()-&gt;isXmlHttpRequest())
{
  // Code exécuté uniquement lorsque l'action est appelée depuis JavaScript
}
</pre>
<span id="Dtecter_le_mode_debug"><h2><a name="Debug"></a>4. Détecter le mode debug</h2></span>
<p>Lorsque votre application est exécutée en mode debug, la constante <code>sf_debug</code> prend la valeur <code>true</code>. Il vous est donc facile de n'afficher certaines informations que pour le développement et le débogage de votre application.</p>
<pre class="brush: php;">
if(sfConfig::get('sf_debug'))
{
  // Code exécuté uniquement lorsque l'application est exécutée en mode debug
}
</pre>
<p>(Ajouté le 04/02/2010)</p>
<span id="Contexte_dexcution"><h2><a name="Debug"></a>5. Contexte d'exécution</h2></span>
<p>Pour éviter l'erreur « The "default" context does not exist. » lorsqu'on utilise i18n ou doctrine dans les models/widgets par exemple.</p>
<pre class="brush: php;">
if(sfContext::hasInstance())
{
  $contexte = sfContext::getInstance();
  // Code exécuté uniquement lorsque l'application est exécutée avec un contexte (depuis une application).
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jerome.tamarelle.net/blog/2010/01/detecter-le-contexte-dexecution-sous-symfony/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
