Un peu de pubs pour un livre blanc Clever Age auquel j'ai contribué.
Les frameworks suivants sont abordés : CakePHP, CodeIgniter, Symfony, Zend Framewok. Avec en fin de chaque chapitre un court paragraphe indiquant dans quels cas métiers utiliser ce framework et, en fin de document, un magnifique tableau QSOS permettant ...
L'équipe de PHP Québec est fière de vous inviter au codeFest 2.1 qui aura lieu le 16-18 mai 2008 à Montréal & Sherbrooke.
Le codeFest est une bonne opportunité pour rencontrer d'autres membres...
« Vous pensiez peut-être que la conception était la seule mission que MySQL Workbench pouvait remplir, et c'est certainement le coeur de son travail. Mais une des raisons qui font que j'utilise un...
« C'est le moment de l'année où le groupe PEAR lance les nominations PEAR. Les personnes nominées seront soumises aux votes de la communauté et 7 heureux désignés seront élus pour être le...
Nexen.net vient de publier les statistiques PHP pour le mois d'avril
« De bonnes nouvelles sur le front des versions PHP : avec la publication début mai de PHP 5.2.6, PHP 5.2.5 a eu le temps...
« Ce script permet d'afficher le gravatar associé à une adresse e-mail. Un gravatar est un petite image vous représentant et qui est affichée au côtés des commentaires que vous déposez sur...
Peter Zaitsev publie un blogue où il répond à une question brûlante : comment arrive-t-il à publier tous ses trucs d'expert MySQL et InnoDB, sans couper la branche sur laquelle il est...
C'est la mode des défilements, ces animations de site Web où le contenu glisse d'un point à l'autre, d'une page à l'autre, d'une image à l'autre sans rechargement. Cela donne une impression de...
L'équipe de symfony, le framework pour php5, vient de corriger une importante faille de sécurité.
Cette correction est l'unique changement entre cette version et la précédente, mais elle justifiait à elle seule la mise à jour. Vous trouverez plus d'informations à propos de la procédure l'exploitant sur le ticket #1617. Brièvement, avant la correction de cette brèche de sécurité, un attaquant pouvait outrepasser le processus de validation en changeant la casse d’un nom de fichier appelé.
Le patch de cette faille a provoqué quelques soubresauts du fait que l'auteur de la découverte l'avait faite remonter il y a plus d'un an.
Concernant la faille, tout le monde n'est pas forcément touché, il faut que votre application utilise :action comme paramètre de règle de routage, ce qui est le cas par défaut.
Pour le savoir, allez à l'emplacement "data/skeleton/app/app/config/" puis regardez dans le fichier "routing.yml".
Si vous trouvez la mention :
default:
url: /:module/:action/*
alors vous êtes affecté par cette faille et l'équipe de symfony vous encourage vivement à mettre à jour le plus rapidement votre version.
Pour la mise à jour :
- Si vous êtes en version 1.0 : vous pouvez patcher directement le fichier sfExecutionFilter.class.php comme indiqué sur le changeset #8922, ou utiliser PEAR (pear upgrade symfony/symfony-1.0.16) ou bien encore le paquet Debian.
- Si vous êtes en version 1.1 : vous pouvez patcher directement le fichier sfExecutionFilter.class.php comme indiqué sur le changeset #8925.
Le patch sera inclus dans la version 1.1RC.
PS : Un peu hors sujet, mais restant sur les failles critiques, si vous utilisez SSH, que vous êtes sous Debian (ou ses dérivées) et que ce n'est pas déjà fait, pensez à mettre à jour aussi si vous ne voulez que l'on puisse prédire" vos clefs.
Proposé par Hourdeaux Christophe
6 paquets ont été mis à jour cette semaine :
APC (0 visite) : cache PHP alternatif
imagick (0 visite) : interface avec la bibliothèque graphique ImageMagick
mcve (0 visite) : interface libmcve
oci8 (0 visite) : fonctions OCI8
phar (0 visite) : support des fichiers d'archives PHP : .phar
spread (0 visite) : Interface PHP pour Spread
PECL est la bibliothèque d'extensions C de PHP.
Les vues, qui permettent de déguiser une requête SELECT en une table, n'ont pas besoin d'être complexes pour être utiles : en fait, elles permettent simplement de configurer en permanence une extraction particulière des données dans une table. Par exemple, on peut s'en servir pour :
- Ajouter ou retirer des colonnes
- Retirer des colonnes
- Formater des colonnes
- Combiner des colonnes
- Limiter les lignes affichées
Plusieurs extensions sont actuellement corrigées car sensibles entre autres aux Cross site scripting (XSS)
Extension WT Gallery (wt_gallery)
Versions concernées : 2.6.2 et versions précédentes.
Lors de l'upload d'une image, l'arborescence du serveur peut apparaître. Cette extension est également sensible aux XSS.
Télécharger la mise à jour
Extension Questionaire (pbsurvey)
Versions concernées : 1.2.0 et versions précédentes.
L'extension est sensible aux XSS et ne filtre pas les données javascript.
Télécharger la mise à jour
Extension Event Database (rlmp_eventdb)
Versions concernées : 1.1.1 et versions précédentes.
L'extension est sensible aux XSS et ne filtre pas les données javascript.
Télécharger la mise à jour
Extension Statistics (ke_stats)
Versions concernées : 0.1.2 et versions précédentes.
L'extension est sensible aux injections SQL et aux XSS.
Télécharger la mise à jour
Extension Frontend User Registration (sr_feuser_register)
Versions concernées : toutes
L'extension est sensible aux XSS et ne filtre pas les données javascript. De plus, l'exécution d'une commande à distance peut effacer certains fichiers du serveur.
Pour les utilisateurs des versions de Typo3 3.x : Télécharger cette mise à jour
Pour les utilisateurs des versions de Typo3 4.x : Télécharger cette mise à jour
Extension Frontend Filemanager (air_filemanager)
Versions concernées : 0.6.0 et versions précédentes
L'extension est sensible aux XSS et ne filtre pas les données javascript. Du code PHP peut également être inséré dans les pages.
Télécharger la mise à jour
Pour toutes les extensions citées ci-dessus, Typo3 conseille de suivre les recommandations données dans le livre de sécurité.
Lire la liste des bulletins de sécurité
"Apprenez à construire des services Web avec PHP, en utilisant les outils PHP Development Tools de Eclipse Europa. Familiarisez vous avec le projet PDT, et apprenez à créer et déployer des projets PHP utiles, apprenez la philosophie de développement du 'contrat en premier', et assimilez les bases d'un fichier Web Services Description Language (WSDL)".
Un tutoriel IBM.
C'est la mode d'abandonner le 'www' dans le nom de domaine, et de faire son lancement sans lui. Kevin Yank fait le point sur cette mode actuelle, notamment auprès des populations techniques.
Je lui trouve un inconvénient important : en sécurité, les cookies sont limités à un domaine, et avoir 'nexen.net' comme domaine d'application signifie en fait que n'importe quel sous-domaine est aussi valable. Alors qu'un cookie pour www.nexen.net, ne sera pas valable sur ftp.nexen.net ou mail.nexen.net. Evidemment, cela ne sera pas forcément utile à tout le monde.
Baron Schwartz déclare que MySQL est un logiciel libre, mais pas Open Source. La base de données est libre grâce à sa licence GNU GPL, sans ambiguïté. Pour l'Open Source, c'est un constat : il n'est pas possible de contribuer à MySQL facilement, et le modèle de développement est fermé. Pas moyen d'envoyer un patch sans signer une lettre de Contributor Licence Agreement, qui donne la propriété du code à MySQL/SUN, et même quand c'est le cas, les patchs sont très longs à être acceptés.
La taille de l'entreprise et les enjeux exigent des protections supplémentaires du code source : il n'est certainement pas possible de gérer un projet de 15 ans comme un qui vient de démarrer. Mais il est dommage de constater que les contributions deviennent effectivement de plus en plus difficiles.
Tyler Hall, puis sitecrafting, ont écrit une classe qui s'interface avec Growl, le système d'alerte universel d'OSX. Growl fait apparaître un message discret et rapide sur le bureau du mac, et permet ainsi de diffuser des informations sans obstruction. Cette fonctionnalité est aussi ouverte au réseau : un autre serveur peut envoyer une alerte à une machine de bureau. C'est ce que PHP-Growl utilise pour envoyer ses messages.
Et sur le site de sitecraft, retrouver un article sur la chasse aux doublons dans MySQL.
Voici les 5 dernières vidéos PHP et MySQL.
Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.
N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.
Clever Age a publié récemment un livre blanc au sujet des frameworks PHP pour l'entreprise.
Le document présente les différents aspects de l'évaluation d'un framework : aspects techniques, évidemment, mais également aspects fonctionnels et stratégiques. Quatre frameworks, parmi les plus populaires, ont été passés au crible : Cake PHP, Code Igniter, Symfony et le Zend Framework.
Chacun d'entre eux a été analysé suivant la méthode QSOS, et le résultat de l'étude est résumé sous la forme de graphiques radar.
Ce livre blanc est disponible gratuitement, sur simple demande.
Proposé par Xavier Lacot
3 nouveaux rendez-vous Webinar sont organisés pour le mois de Mai :
WEBINAR : "Créez et déboguez vos applications PHP avec Zend Studio for Eclipse"
Jeudi 22 mai 2008 – 14h30 : Votre ordinateur - via Webex
Zend Studio for Eclipse est notre IDE PHP de nouvelle génération basé sur Zend Studio "Classique" et l'environnement Eclipse. Studio possède de nombreuses nouvelles fonctionnalités telles que le Code coverage, le test unitaire, le profiling...
L'objectif de ce webinar est de mettre en rapport les fonctionnalités de Studio for Eclipse avec les problématiques quotidiennes de développement.
Nous vous montrerons donc comment créer et déboguer une application PHP en utilisant les outils Zend Studio for Eclipse.
Nous aborderons de manière pratique la gestion de projets, les fonctionnalités de base (édition, complétion, templates), les fonctionnalités avancées (génération de code, débogage, profiling, test unitaire).
Notre expert répondra à l'ensemble de vos questions tout au long de cette présentation.
Durée : 50 minutes
Public : développeurs, chefs de projet...
Intervenant : Gauthier Delamarre, Consultant Zend Technologies
https://zend.webex.com/zend-fr/onstage/g.php?t=a&d=578382773
--------------------------------------------------------------------
Webinar : "Migration PHP4 vers PHP5, quels enjeux et problématiques ?"
Mardi 20 mai 2008 – 14h30 : Votre ordinateur - via Webex
Le PHP Group annoncé la fin du support de PHP4 par la communauté le 8 août 2008. Cet arrêt impose aux entreprises qui possèdent des serveurs PHP4 de considérer la problématique d'une migration vers PHP5 non seulement de vos serveurs, mais aussi de vos applications.
Pourquoi envisager la migration, même celle d'un système fonctionnel ?
Quels sont les avantages de PHP 5 par rapport à PHP 4 ?
Quels sont les risques ?
Quel est le processus de migration ?
C'est aussi l’occasion de poser toutes vos questions à un expert Zend en direct.
Durée : 40 minutes environ
Public : développeurs, administrateurs, responsables informatiques
Intervenant : Gauthier Delamarre, Consultant Zend Technologies
https://zend.webex.com/zend-fr/onstage/g.php?t=a&d=575744185
---------------------------------------------------------------------
WEBINAR : "Optimisez et supervisez vos applications PHP avec Zend Platform"
Mardi 27 mai 2008 – 14h30 : Votre ordinateur - via Webex
Durant cette présentation, vous découvrirez comment la Zend Platform vous permet d'accélérer vos développements et réduire vos coûts de maintenance grâce à un système de supervision complet de vos applications. Lors d'une phase de démonstration, un consultant vous montrera comment il est possible de déboguer d'un clic un incident passé, et enregistré par la Platform, directement en mode débogage pas-à-pas. Seront également présentées les fonctionnalités d'amélioration de performances au travers de différents mécanismes de cache.
Durée : 50 minutes / 1 heure (dont Questions/réponses)
Public : développeurs, administrateurs, responsables informatiques
Intervenant : Gauthier Delamarre, Consultant Zend Technologies
https://zend.webex.com/zend-fr/onstage/g.php?t=a&d=570899126
Proposé par Hello
MySQL permet de faire des effacements multi-tables : un effacement à jointure, si vous voulez. Mais cette fonctionnalité si pratique ne supporte pas la clause LIMIT, que JOIN et DELETE supportent séparément. Justin Swanhart vous propose alors une solution de remplacement, basée sur des variables de session.
Les requêtes SQL préparées, aussi appelées commandes préparées, sont la panacée actuelle contre les injections SQL. Mais elles viennent avec un coût de performance assez important, un allongement du code PHP, et aussi, moins d'optimisation d'exécution. En effet, le plan d'exécution de la requête est calculé avant que les données ne soient connues, et cela empêche l'optimisateur d'utiliser certains index.
Lukas Smith propose alors de passer à l'émulation de commandes préparées, via PDO, pour avoir un système qui sépare l'exécution de l'analyse, mais en laissant la base de données traiter des requêtes complètes.
L'équipe de PHP Québec est fier de vous invitez au codeFest 2.1 qui aura lieu le 16-18 Mai 2008 à Montréal & Sherbrooke.
Le codeFest est une bonne opportunité pour rencontrer d'autres membres de la communauté OpenSource de PHP, Python, Ruby, Java et échanger sur divers techniques de développement.
Nous invitons les développeurs Juniors & Senior à ce joindre à nous pour deux jours d'optimisation & d'écriture de test unitaire pour votre projet OpenSource préféré.
Les projets proposés sont:
* MediaWiki
* Drupal
* WordPress
* TikiWiki CMS/Groupware
* BeWelcome
* Habari
* Anne G. wikigraphe
* PHP Quebec Employment section
* Votre projet (contactez nous,
contact@codefest.com)
Les objectif du codeFest sont:
* Écrire des tests unitaires afin d'augmenter la qualité des applications OpenSource
* Optimiser les applications proposé
Nous sommes présentement à la recherche de:
* 1-2 commanditaires afin de fournir la nourriture et consommations (500$) contacter
ylarrivee@phpquebec.com* Une personne pour prendre en charge le développement sur Drupal
* Une personne pour prendre en charge le développement sur Typo3
* Une personne pour prendre en charge le développement sur WordPress
Date & Lieu:
À Montréal
Vendredi 16 19:00-22:00 (social)
Samedi 17 9:00-18:00 (codeFest)
Dimanche 18 9:00-18:00 (codeFest)
Lieu : Pub sans génie @ École de technologie supérieure
Address: 530, rue Peel (corner Notre-Dame Ouest), Montréal
Metro: Bonaventure
Map :
http://tinyurl.com/5pjwwnÀ Sherbrooke:
Date : 16-18 Mai 2008
Heure : 9:00am-6:00pm
Lieu : 975-3, rue Perry, Sherbrooke, Qc
Map :
http://tinyurl.com/4vt8wxVoir :
http://blog.autre-chose.org/2008/05/11/troisieme-codefest/Confirmez votre présence sur:
* On UpComing :
http://upcoming.yahoo.com/event/319522/* On Facebook
http://www.facebook.com/event.php?eid=6086277831================================================
The PHP Quebec team is pleased to invite you to the codeFest PHP Quebec 2.1 that will be held in Montreal & Sherbrooke on May16th-18th 2008.
The codeFest is a great opportunity to meet with peers PHP, Python, Ruby, Java developers and share knowledge and participate in the development of OpenSource software.
Senior & Junior developers from the PHP, Python, Ruby, Java community are invited to join us for 2 days of optimization & Unit Testing of your favorite OpenSource project.
Proposed Projects in 2.1:
* MediaWiki
* Drupal
* WordPress
* TikiWiki CMS/Groupware
* BeWelcome
* Habari
* Anne G. wikigraphe
* PHP Quebec Employment section
* Your project! (Contact us
contact@codefest.wscontact at codefest.ws
Goal:
* Improve the performance of OpenSource projects
* Improve code quality of OpenSource projects by writing UnitTest
We are currently looking for:
* 1-2 Sponsor to help cover expenses such has food and drinks (500$) contact
ylarrivee@phpquebec.com* Project leader for Drupal
* Project leader for WordPress
* Project leader for Typo3
In Montreal
Date & Time
Friday 16th 19:00-22:00 (social/casual/unofficial warm-up)
Saturday 17th 9:00-18:00 (codeFest)
Sunday 18th 9:00-18:00 (codeFest)
Location : Pub sans génie @ École de technologie supérieure
Address: 530, rue Peel (corner Notre-Dame Ouest), Montréal
Metro: Bonaventure
Map :
http://tinyurl.com/5pjwwnIn Sherbrooke:
Date : May 16th-18th 2008
Time : 9:00am-6:00pm
Location : 975-3, rue Perry, Sherbrooke, Qc
Metro : N/A
Map :
http://tinyurl.com/4vt8wxSee :
http://blog.autre-chose.org/2008/05/11/troisieme-codefest/Also on:
* On UpComing :
http://upcoming.yahoo.com/event/319522/* On Facebook
http://www.facebook.com/event.php?eid=6086277831
"Outre ces mécanismes [NDJ : indexation et caches], la technologie SSD pourrait bien à lavenir changer la donne.
Les SSD, littéralement Solid-State Drives (ou Disk par abus de langage), ne sont pas des disques mais des unités de stockage constituées de mémoire flash (persistante).
Au vu des benchmarks les concernant, il ya fort à parier que les SSD seront de plus en plus dactualité dans les mois qui viennent."
Les vues matérialisées sont des vues SQL, qui sont stockées physiquement par la base. Les vues actuelles sont des vues dynamiques, c'est à dire qu'elles se basent sur une exécution de la requête sous-jacente à chaque utilisation. Si les données des tables ne changent pas trop souvent, avoir un système de cache donne une belle accélération.
Les vues matérialisées sont disponibles chez Oracle et DB2. Pour MySQL, rien de standard, mais il doit être possible de s'en sortir avec des tables en mémoire, et le programmateur d'événements.
Une nouvelle attaque en ligne a profité de mauvaises configurations des forums phpBB : les sites compromis effectuent alors une série de redirections, pour finir sur des sites qui tentent différentes attaques sur Internet Explorer ou RealNetworks RealPlayer media player. phpBB est fréquemment inclus dans les campagnes de scan de masse, et, malheureusement, il semble que des sites piratés l'an dernier aient aussi eu des problèmes cette année encore.
Et avec php dans le nom, c'est encore de la mauvaise publicité pour la plate-forme.
L'option -a de PHP-CLI (en ligne de commande), active le mode interactif de PHP. C'est un mode où les instructions seront exécutées au fur et à mesure que vous les tapez.
$ php -a
Interactive mode enabled
html
<?php
html
echo phpversion();
5.2.6?>
Notez que c'est difficile à comprendre sur l'exemple ci-dessus : PHP commence par produire les deux premières lignes. Puis, j'ai tapé html, qui est affiché une deuxième fois plus bas, quand PHP décide d'exécuter le code HTML initial. En effet, le mode interactif se comporte comme PHP, et affiche directement le texte qui n'est pas dans une balise.
Ensuite, je met des commandes complètes (ici, PHPversion()), qui est affichée immédiatement après. Au final, je ferme la balise.
Ce mode est pratique si vous voulez tester une fonction ou un bout de code PHP. En en discutant avec Chris Hartjes (si vous avez l'occasion, allez le voir en conférence), ce mode est très pratique pour mettre en place les tests unitaires : il l'a fait pour cakePHP.
Imaginez, vous avez programmé une fonction (ou une classe, ou une bibliothèque, etc). Pour la vérifier, vous l'exécutez avec le mode interactif, et vous vérifiez manuellement que tout se passe bien. Par exemple, avec une fonction qui teste si un nombre est premier (retourne 0 si oui, et un facteur sinon), on pourrait avoir ceci :
<?php
include('prime.php');
print is_prime(4);
4
print is_prime(7);
0
print is_prime(13);
0
print is_prime(49);
0
?>
Je viens de tester 4 valeurs, et j'ai identifié un bug (49). Idéalement, je vais retourner dans mon code, le corriger. Mais cette liste de tests manuels pourrait (devrait) être gardée pour être rejouée la prochaine fois! Pourquoi ne pourrait-elle pas être enregistrée, pour que je gagne du temps plus tard? Et pour être publié avec mon code, dans un format plus standard (phpunit, simpletest)? On aurait ainsi une méthode simple pour capter des tests unitaires, et capitaliser sur cette masse immense de tests manuels, qui sont perdus après chaque exécution.
Lorsque MySQL envisageait d'avoir des procédures stockées, la rumeur circulait que PHP pourrait être le langage adopté. Ce ne fut pas le cas, mais l'idée de pouvoir utiliser n'importe quel langage de programmation comme procédure stockée est restée. Résultat : c'est fait.
Il existe un plug-in MySQL udfng qui accepte du code en C, Java, LegacyUDF (vieilles UDF), Perl et XML-RPC. Eric Herman et Antony Curtis cherchent d'ailleurs les prochaines plates-formes à ajouter. PHP! PHP!
Thomas Frank a découvert un truc très pratique pour mettre en place des sessions Javascript. Ces sessions sont les mêmes que PHP, mais restent du coté du navigateur : cela permet de laisser des valeurs privées du coté du client, et d'éviter de les voir se balader sur le réseau.
Son astuce : prendre le champ de titre top.name, qui est généralement inusité par les navigateurs, pour stocker des informations. Cela permet de dépasser la limite de 4 x 20 ko des cookies, puisque ce champ n'a pas de limite (semble-t-il).
Autre avantage : ce champ reste valable durant la vie de la page. Aucun stockage sur le disque, et un nettoyage discret.
En termes de sécurité, ce petit script peut être redoutable : si les données sont valables durant la vie de la page, cela devient un vecteur pour transmettre des informations d'un domaine à l'autre : cela devient un buffer pour stocker une foule d'information (historique, log de clavier, etc), qu'il suffit de récupérer en fin de navigation. brr....
PHP intègre un autre concept de la programmation orientée objet : les classes abstraites. Ce cours définit et introduit la notion de classes abstraites. Nous présenterons ce que sont les classes abstraites, à quoi elles servent au développement et comment les déclarer et les utiliser. Nous étudierons enfin le cas particulier des classes et méthodes finales qui participent à la sécurité du code en programmation orientée objet.
Aujourd’hui encore, PHP est de loin un langage de choix dans le développement web.
Cependant, celui-ci n’a pas évolué en profondeur depuis de nombreuses versions, et de nouveaux arrivants, tel que le framework Ruby on Rails (langage Ruby) ou encore le langage Python (qui n’a pourtant pas été conçu à l’origine pour le web) voient leur popularité croître de plus en plus.
Dernier exemple en date, la plateforme d’hébergement et de développement RoR heroku.com a levé $3 millions d’un fond d’investissement, Redpoint Ventures il y a de cela quelques jours (consultez l’article techcrunch à ce sujet).
Ces nouveaux arrivants sont objectivement bien plus structurés en interne que PHP, qui se traîne entre autres depuis des années son système de nommage de fonctions anarchique :
(Plus de détails sur cet article de PHP Index : Et si PHP était audité demain ?)
Mais PHP, c’est aussi des aspects de fonctionnement qui ont été souvent au centre de nombreuses polémiques, avec parmi ces bad practices :
- magic_quotes, ou l’échappement automatique des caractères, créant de nombreux problèmes de portabilité d’une configuration à l’autre, de performance et de compréhension du code.
- register_global, désactivée par défaut depuis PHP 4.2. Les trous de sécurité créés par certains développeurs utilisant cette option ne compensait pas la fausse facilité de programmation qui semblait offerte.
PHP5, c’est encore des lacunes dans le traitement des chaînes de caractères multi-octets. Les fonctions internes de PHP4 ou 5 ne sont pas capables de traiter des chaînes multi-octets (en UTF8 par exemple), il faut passer par des extensions tels que mb_string, et utiliser les fonctions correspondantes : mb_strlen, mb_strpos, mb_strtolower … Sans cela, des problèmes importants sont à craindre. Exemple simple :
- echo strlen(utf8_encode(’ééé’)); –> 6
- echo mb_strlen(utf8_encode(’ééé’));–> 3
Sur l’internet de nos jours, les vrais projets se font dans une perspective multi-langues. Le jeu de caractère généralement choisi est l’UTF8, et il est alors nécessaire de respecter une chaîne d’encodage identique de la source vers la destination. Il faut alors être rigoureux, connaitre les good practices afin d’éviter les erreurs :
- La vérification des chaînes de caractères doit utiliser les fonctions mb_* ou utiliser des fonctions telles que utf8_encode ou ut8_decode, ce qui ne facilitent pas forcément le code et sa performance.
- Le type d’encodage doit être respecté entre le format d’entrée, le format de sortie, l’écriture des fichiers PHP, eux même en UTF8 si ils contiennent des chaînes destinées à être affichées. Sinon il ne faut pas oublier de passer tous textes destinés à être affichés par utf8_encode, mais en contrepartie d’un traitement supplémentaire qui aurait pu être économisé
- De même, la liaison à une éventuelle base de donnée doit se faire dans le jeu de caractères utilisé “nativement” (en MySQL, le très pratique SET NAMES ‘UTF8′ en début de connexion par exemple).
Bref, vous l’aurez compris, savoir bien développer aujourd’hui en PHP n’est plus aussi facile que dans l’internet d’il y a 5 ans, où les sites développés n’ont jamais été aussi complexes que maintenant. Les contraintes de développement des projets du web 2 imposent un ensemble de good practices qu’il est nécessaire de maitriser.
Le PHP est t’il devenu inadapté et dépassé ?
PHP6
En développement depuis au moins 2 ans, la version finale n’est toujours pas disponible mais ça arrive. Le planning de développement est fixé, et les nouveautés sont là (je vous invite à lire cet article paru sur l’IBM Developper Works il y a quelques jours).
Quelles sont donc ces avancées ?
- Un bon nettoyage pour tuer définitivement les bad practices rémanente chez certains. On peut donc dire adieu sans regrets aux fonctions découlant de l’activation des magic_quotes, register_globals, et autres register_long_arrays.
- Ensuite, un support natif de l’unicode. Ca tient sur une ligne dans le changelog, mais c’est probablement la partie qui a été la plus consommatrice de temps, car il a fallut réécrire tout le moteur Zend. Résultat : on pourra utiliser les fonctions classique strlen, substr, strpos … avec des chaînes formatées en UTF-8. Adieu donc les extensions iconv et mb_string qu’il fallait se trainer ou alors le switch entre utf8_decode/encode.
- Fin de la dualité entre les expressions régulières POSIX (ereg*) et PCRE (preg_*). Tant mieux, les PCRE étant plus complètes et performantes.
Mais finalement, que reste t’il de nouveau pour les bons développeurs respectant déjà les bonnes pratiques et n’étant quasiment pas concernés par tout ces changements ?
Pas grand chose, hormis les namespaces, qui vont être aussi portés en PHP 5.3, donc ne sont plus vraiment un privilège de PHP6 ;o.
On n’aura malheureusement pas encore droit à une meilleure consistance dans le système de nommages des fonctions internes. Je pense qu’il aurait été judicieux dans PHP6 de revoir toutes ces incohérences, quitte à attendre plus longtemps, car PHP6 est résolument une version introduisant de nouvelles fondations bien plus propres et solides, et ça fait un peu tâche de se traîner ce système anarchique.
La question finale sera concernant l’adoption de PHP6 chez les hébergeurs mutualisés. Beaucoup trop sont toujours en PHP4, alors que sa fin a sonné.
PHP6 est une version importante qui va sans aucun doute améliorer la qualité et la sécurité du code pour beaucoup, ainsi qu’offrir de nouvelles performances.
Mais combien de temps avant que PHP6 ne soit réellement adopté ?

Graphique nexen.net
Le site IBM effectue un petit point concernant les différentes nouveautés qui sont attendues pour PHP 6 sous la forme de petits exemples :
- Support de l'unicode
- Ajout des Namespaces
- Les activations des modules SOAP, XMLwriter, XMLreader
- Suppression des options de configuration :
- magic_quotes
- register_globals
- register_long_array
- safe_mode
- Suppression du support de :
-
Freetype1
- GD1
- Fonctions liées aux expressions rationnelles POSIX
Brian Aker a cessé de compter le nombre de proxy pour MySQL qu'il a repéré : il y a SQL Relay, qui remonte à quelques années, MySQL Proxy, de Jan Kneschke. En fait, il y en a encore 4 autres différents. Lequel est le meilleur, se demande Brian?
PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.6 et 4.4.8; MySQL 5.0.51 (communauté) , 5.1.24-rc et 6.0.4.
Les mises à jour sont recommandées vers ces versions.
3 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Joomla, e107 et ming
17 paquets ont été mis à jour cette semaine :
PEAR est la bibliothèque de composants PHP.
Vu sur l'IBM Developer Works un court et synthétique article sur les nouveautés attendues dans PHP6
, encore plus en bref :
Il est dommage que ce passage ne soit pas l'occasion de refondre l'API pour y apporter une cohérence regrettée
...