<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Webdev</title><link>http://blogs.labo-dotnet.com/pierre_gildas/category/453.aspx</link><description>Webdev</description><managingEditor>Pierre-Gildas</managingEditor><dc:language>fr-FR</dc:language><generator>.Text Version 0.95.2004.101</generator><item><dc:creator>Pierre-Gildas</dc:creator><title>Pouvoir gérer toutes les erreurs de PHP dans un bloc try/catch</title><link>http://blogs.labo-dotnet.com/pierre_gildas/archive/2005/09/20/10321.aspx</link><pubDate>Tue, 20 Sep 2005 19:51:00 GMT</pubDate><guid>http://blogs.labo-dotnet.com/pierre_gildas/archive/2005/09/20/10321.aspx</guid><wfw:comment>http://blogs.labo-dotnet.com/pierre_gildas/comments/10321.aspx</wfw:comment><comments>http://blogs.labo-dotnet.com/pierre_gildas/archive/2005/09/20/10321.aspx#Feedback</comments><slash:comments>21</slash:comments><wfw:commentRss>http://blogs.labo-dotnet.com/pierre_gildas/comments/commentRss/10321.aspx</wfw:commentRss><trackback:ping>http://blogs.labo-dotnet.com/pierre_gildas/services/trackbacks/10321.aspx</trackback:ping><description>&lt;p&gt;Marre de ces Warnings, Notices et autres erreurs grossièrement affichées par PHP et défigurant tout votre site web ?&lt;/p&gt;
&lt;p&gt;Marre de désactiver systématiquement la gestion d'erreurs et d'utiliser la fonction die voir trigger_error ?&lt;/p&gt;
&lt;p&gt;Je vous propose de ne lever, avec PHP, que des exceptions gérables dans des blocs try/catch.&lt;/p&gt;
&lt;p&gt;Comment ?&lt;/p&gt;
&lt;p&gt;En modifiant simplement le gestionnaire d'erreur de PHP :&lt;/p&gt;
&lt;p&gt;&lt;pre style="background-color:#DCDCDC;font-size:12px"&gt;
set_error_handler('errorHandler');

function errorHandler($level, $string, $file, $line)
{
	throw new Exception($string);
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Bon par contre vous avez intérêt à mettre des blocs try/catch sinon les messages d'erreurs ressemblent à...
&lt;p&gt;&lt;code style="font-size:12px"&gt;Uncaught exception 'Exception' with message 'Test' in C:\Documents and Settings\Ishtanzar\Bureau\article.html:31&lt;br/&gt;
Stack trace:&lt;br/&gt;
#0 C:\Documents and Settings\Ishtanzar\Bureau\article.html(31): errorHandler()&lt;br/&gt;
#1 C:\Documents and Settings\Ishtanzar\Bureau\article.html(41): errorHandler(512, 'Test', 'C:\Documents an...', 41, Array)&lt;br/&gt;
#2 C:\Documents and Settings\Ishtanzar\Bureau\article.html(41): trigger_error('Test', 512)&lt;br/&gt;
#3 {main}&lt;br/&gt;
  thrown
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;C'est tout de suite plus... violent, et ça se passe de commentaires...&lt;/p&gt;
&lt;p&gt;Bon PHP ;-)&lt;/p&gt;&lt;img src ="http://blogs.labo-dotnet.com/pierre_gildas/aggbug/10321.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Pierre-Gildas</dc:creator><title>Zend Studio 5 beta</title><link>http://blogs.labo-dotnet.com/pierre_gildas/archive/2005/09/14/10295.aspx</link><pubDate>Wed, 14 Sep 2005 12:05:00 GMT</pubDate><guid>http://blogs.labo-dotnet.com/pierre_gildas/archive/2005/09/14/10295.aspx</guid><wfw:comment>http://blogs.labo-dotnet.com/pierre_gildas/comments/10295.aspx</wfw:comment><comments>http://blogs.labo-dotnet.com/pierre_gildas/archive/2005/09/14/10295.aspx#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://blogs.labo-dotnet.com/pierre_gildas/comments/commentRss/10295.aspx</wfw:commentRss><trackback:ping>http://blogs.labo-dotnet.com/pierre_gildas/services/trackbacks/10295.aspx</trackback:ping><description>&lt;p&gt;Zend Studio 5 est diponible au téléchargement en version bêta sur&lt;a href="http://www.zend.com/"&gt; le site de Zend.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A noter que tout bêta testeur aura droit a une réduction de 20% du prix des version Pro et Entreprise de Zend Studio acheté avant le 14 Novembre 2005 et recevra gratuitement la version 5 de Zend Studio dès sa sortie.&lt;/p&gt;
&lt;p&gt;Une réduction de 200$ est également offerte pour la conférence Zend/PHP de San Francisco.&lt;/p&gt;

&lt;p&gt;Information complémentaires et source : &lt;a href="http://www.zend.com/store/products/zend-studio/beta.php"&gt;http://www.zend.com/store/products/zend-studio/beta.php&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.labo-dotnet.com/pierre_gildas/aggbug/10295.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Pierre-Gildas</dc:creator><title>Zend Studio 4, le déboguage et les extensions</title><link>http://blogs.labo-dotnet.com/pierre_gildas/archive/2005/09/04/9606.aspx</link><pubDate>Sun, 04 Sep 2005 10:54:00 GMT</pubDate><guid>http://blogs.labo-dotnet.com/pierre_gildas/archive/2005/09/04/9606.aspx</guid><wfw:comment>http://blogs.labo-dotnet.com/pierre_gildas/comments/9606.aspx</wfw:comment><comments>http://blogs.labo-dotnet.com/pierre_gildas/archive/2005/09/04/9606.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.labo-dotnet.com/pierre_gildas/comments/commentRss/9606.aspx</wfw:commentRss><trackback:ping>http://blogs.labo-dotnet.com/pierre_gildas/services/trackbacks/9606.aspx</trackback:ping><description>Avec Zend Studio 4 il est possible de déboguer ses sites et apllications PHP sans avoir de moteur PHP sur sa machine. Zend Studio utilisant son propre PHP en CGI.&lt;br/&gt;
Toutefois il n'est possible d'utiliser ce moteur de déboguage qu'avec les fonctions PHP dites "de base", c'est à dire sans qu'aucune extension ne soit nécessaire.&lt;br/&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;Démonstration&lt;/span&gt;&lt;br/&gt;
Essayez de compiler le code suivant avec l'installation de base de Zend:&lt;/p&gt;
&lt;pre style="font-size:12px"&gt;
&lt;span style="color:blue;"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span style="color:blue;"&gt;$connect_host&lt;/span&gt; &lt;span style="color:green;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;"localhost"&lt;/span&gt;&lt;span style="color:green;"&gt;;&lt;/span&gt;
&lt;span style="color:blue;"&gt;$connect_port&lt;/span&gt; &lt;span style="color:green;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;"5432"&lt;/span&gt;&lt;span style="color:green;"&gt;;&lt;/span&gt;
&lt;span style="color:blue;"&gt;$connect_db&lt;/span&gt; &lt;span style="color:green;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;"dbname"&lt;/span&gt;&lt;span style="color:green;"&gt;;&lt;/span&gt;
&lt;span style="color:blue;"&gt;$connect_user&lt;/span&gt; &lt;span style="color:green;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;"dbuser"&lt;/span&gt;&lt;span style="color:green;"&gt;;&lt;/span&gt;
&lt;span style="color:blue;"&gt;$connect_pass&lt;/span&gt; &lt;span style="color:green;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;"dbpass"&lt;/span&gt;&lt;span style="color:green;"&gt;;&lt;/span&gt;

&lt;span style="color:blue;"&gt;pg_connect&lt;/span&gt;&lt;span style="color:green;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;"pgsql:host=&lt;span style="color:blue;"&gt;$connect_host&lt;/span&gt; port=&lt;span style="color:blue;"&gt;$connect_port&lt;/span&gt; dbname=&lt;span style="color:blue;"&gt;$connect_db&lt;/span&gt; user=&lt;span style="color:blue;"&gt;$connect_user&lt;/span&gt; password=&lt;span style="color:blue;"&gt;$connect_pass&lt;/span&gt;"&lt;/span&gt;&lt;span style="color:green;"&gt;);&lt;/span&gt;

&lt;span style="color:blue;"&gt;?&amp;gt;&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;Voici un apreçu du message de Zend Studio:&lt;/span&gt;&lt;br/&gt;
Call to undefined function pg_connect();&lt;/p&gt;

Ce message d'erreur de PHP signifie que la fonction pg_connect n'est pas définie; en effet cette fonction n'est présente que dans l'extension PostGreSQL et n'est pas inclue dans le noyau de PHP.&lt;br/&gt;
Afin d'utiliser ce genre de fonctions, il vous est nécessaire de télécharger le moteur PHP. Deux solutions s'offrent ensuite à vous:&lt;br/&gt;

&lt;ol&gt;1/ Mettre le moteur PHP dans le dossier de Zend Studio où se situe le CGI: [ZendStudio Path]\bin\php[4/5] en prenant soin de ne PAS écraser les fichiers deja présents.&lt;/ol&gt;

&lt;ol/&gt;2/ Mettre le moteur PHP dans un autre dossier afin de pouvoir le réutiliser comme bon vous semble sans vous heurter au CGI modifié de Zend Studio (idéalement C:\PHP).&lt;/ol&gt;

Ensuite il ne vous reste plus qu'a modifier le fichier php.ini qu'utilise Zend Studio ([ZendStudio Path]\bin\php[4/5]\php.ini) et de rajouter les lignes suivantes:&lt;/br&gt;

&lt;pre style="font-size:12px"&gt;
extension_dir= "[PHP Path]\ext\"
extension = [Dll name].dll
&lt;/pre&gt;

&lt;p style="text-decoration:underline;"&gt;Exemple concret:&lt;/p&gt;
&lt;pre style="font-size:12px"&gt;
extension_dir="C:\PHP\ext\"
extension=php_pgsql.dll
&lt;/pre&gt;
Et voilà, vous pouvez maintenant utiliser les fonctions avancées de PHP avec le moteur de déboguage de Zend Studio.&lt;img src ="http://blogs.labo-dotnet.com/pierre_gildas/aggbug/9606.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Pierre-Gildas</dc:creator><title>Sortie d'un nouveau blog</title><link>http://blogs.labo-dotnet.com/pierre_gildas/archive/2005/09/01/9342.aspx</link><pubDate>Thu, 01 Sep 2005 16:42:00 GMT</pubDate><guid>http://blogs.labo-dotnet.com/pierre_gildas/archive/2005/09/01/9342.aspx</guid><wfw:comment>http://blogs.labo-dotnet.com/pierre_gildas/comments/9342.aspx</wfw:comment><comments>http://blogs.labo-dotnet.com/pierre_gildas/archive/2005/09/01/9342.aspx#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://blogs.labo-dotnet.com/pierre_gildas/comments/commentRss/9342.aspx</wfw:commentRss><trackback:ping>http://blogs.labo-dotnet.com/pierre_gildas/services/trackbacks/9342.aspx</trackback:ping><description>Bonjour à tous,&lt;br /&gt;&lt;br /&gt;

Me voila lancé dans les blogs, il me manquait plus que ça. &lt;br /&gt;
Alors on va commencer tout de suite avec un excellente nouvelle pour les amateurs de POO:&lt;br /&gt;&lt;br /&gt;

En effet, depuis le 8 Août avec PHP 5.1, vous pourrez utiliser entre autre les PDO (PHP Data Objects).&lt;br /&gt;
Mais qu'est-ce que cette bête la? &lt;br /&gt;
Une extension pour PHP qui vous permet de lever des exceptions lors de votre travail avec un SGBD.&lt;br /&gt;
Vous en avez marre du bon gros message d'erreur de PHP lorsque votre connexion échoue? Et bien maintenant PHP lèvera une PDOException si la connexion échoue.&lt;br /&gt;
Il ne vous reste plus qu'à traiter tout cela dans un block try/catch et vous pouvez faire le traitement que vous voulez de manière propre sans utilisr l'opérateur @ afin de désactiver la gestion d'erreur (fortement déconseillé). &lt;br /&gt;&lt;br /&gt;

Petit exemple pratique:&lt;br /&gt;&lt;br /&gt;

&lt;pre style="font-size:12px";&gt;
&lt;span style="color:blue;"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span style="color:blue;"&gt;$connect_str&lt;/span&gt; &lt;span style="color:green;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;"mysql:dbname=testdb;host=127.0.0.1"&lt;/span&gt;&lt;span style="color:green;"&gt;;&lt;/span&gt;
&lt;span style="color:blue;"&gt;$connect_user&lt;/span&gt; &lt;span style="color:green;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;"dbuser"&lt;/span&gt;&lt;span style="color:green;"&gt;;&lt;/span&gt;
&lt;span style="color:blue;"&gt;$connect_pass&lt;/span&gt; &lt;span style="color:green;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;"dbpass"&lt;/span&gt;&lt;span style="color:green;"&gt;;&lt;/span&gt;

&lt;span style="color:blue;"&gt;try&lt;/span&gt; &lt;span style="color:green;"&gt;{&lt;/span&gt;
  &lt;span style="color:blue;"&gt;$dbh&lt;/span&gt; &lt;span style="color:green;"&gt;=&lt;/span&gt; &lt;span style="color:green;"&gt;new&lt;/span&gt; &lt;span style="color:blue;"&gt;PDO&lt;/span&gt;&lt;span style="color:green;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;$connect_str&lt;/span&gt;&lt;span style="color:green;"&gt;,&lt;/span&gt; &lt;span style="color:blue;"&gt;$connect_user&lt;/span&gt;&lt;span style="color:green;"&gt;,&lt;/span&gt; &lt;span style="color:blue;"&gt;$connect_pass&lt;/span&gt;&lt;span style="color:green;"&gt;);&lt;/span&gt;
&lt;span style="color:green;"&gt;}&lt;/span&gt;&lt;span style="color:blue;"&gt; catch&lt;/span&gt; &lt;span style="color:green;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;PDOException $e&lt;/span&gt;&lt;span style="color:green;"&gt;) {&lt;/span&gt;
  &lt;span style="color:green;"&gt;echo&lt;/span&gt; &lt;span style="color:red;"&gt;"Echec de la connexion"&lt;/span&gt;&lt;span style="color:green;"&gt;;&lt;/span&gt;
  &lt;span style="color:green;"&gt;exit();
}&lt;/span&gt;

&lt;span style="color:blue;"&gt;?&amp;gt;&lt;/span&gt; 
&lt;/pre&gt;&lt;br /&gt;

En cas d'erreur lors de la connexion, une PDOException est levée, exception récupérée par votre bloc try/catch.&lt;br /&gt;
On affiche un message d'erreur et on arrête le script.&lt;br /&gt;
Notez qu'avec les PDO, vous utilisez des chaines de connexion (à la manière de JDBC en Java).&lt;img src ="http://blogs.labo-dotnet.com/pierre_gildas/aggbug/9342.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>