Il existe beaucoup de types d'URL possible pour une application web et encore plus de codes pour les générer. Une bonne URL devrait être assez courte mais significative. Par exemple le CMS eZ Publish depuis sa version 3.10 utilise un système assez complexe (en code) mais très souple permettant de produire des URLs selon le format de son choix (avec ou sans majuscule, en conservant ou non les accents, les espaces, choix du séparateur, ...) . Si, on ne trouve pas son bonheur on peut même écrire une extension pour un formatage sur mesure, voir par exemple celle de Damien Pitard sur ez.no optimisant les URLs pour l'indexation de contenu dans Google Actualités .
Quand on écrit une application simple en tout cas, moins générique qu'un CMS comme eZ Publish, on peut faire plus simple. Personnellement, j'aime les URLs de la forme "generer-des-url-en-php", c'est à dire en minuscule sans caractère spécial ni accent avec un tiret comme séparateur, c'est a priori la forme la plus simple et optimisée pour les moteurs de recherche .
Pour produire, une URL de ce type j'utilise une fonctionnalité assez peu connue de la fonction iconv() : la translittération. En gros, iconv() est capable lors de la conversion d'un jeu de caractères à un autre de trouver des équivalences si un caractère ne peut être représenté dans le jeu de caractères cible. Par exemple, si on convertit un é en ASCII, iconv() proposera un e à la place avec l'option TRANSLIT, le symbole € sera lui remplacé par "eur"... C'est d'ailleurs aussi très pratique pour traiter des chaînes de caractères issues de copier coller de traitement de texte comme Word qui insère pas mal de bizarreries.
Le code que j'utilise est le suivant :
<?php class MonApplicationTools { const LOCALE = 'fr_FR.UTF-8'; const CHARSET = 'UTF-8'; const SEPARATOR = '-'; static function initLocale( $locale = self::LOCALE ) { setlocale( LC_ALL, $locale ); } static function URLize( $str, $fromCharset = self::CHARSET, $separator = self::SEPARATOR ) { $tmp = iconv( $fromCharset, 'ASCII//TRANSLIT', trim( $str ) ); $pattern = array( '/[^a-z0-9]/', '/' . $separator . $separator . '+/', '/^' . $separator . '/', '/' . $separator . '$/' ); $replacement = array( $separator, $separator, '', '' ); return preg_replace( $pattern, $replacement, strtolower( $tmp ) ); } } MonApplicationTools::initLocale(); $url1 = MonApplicationTools::URLize( 'Générer des URL en PHP' ); $url2 = MonApplicationTools::URLize( 'Fraude sur des milliards d\'€ à la Société Générale !!' ); echo $url1 . '<br />' . $url2; // renvoie // generer-des-url-en-php // fraude-sur-des-milliards-d-eur-a-la-societe-generale ?>
Le seul inconvénient de cette méthode est qu'il faut initialiser la locale utilisée par l'application par une locale existante sur le système et reconnaissant les caractères à transformer, ce qui est rarement le cas par défaut mais peut être très utile par ailleurs si on veut par exemple utiliser des formats de dates normalisés et localisés avec strftime() . L'appel de la méthode initLocale() (qui appelle setlocale() ) réalise ce travail et aura sa place dans un fichier d'intilialisation globale (connexion à la base de données, définition du __autoload, ...) inclus dans tous les scripts. Il faut également prêter attention au fait que sous Windows, les locales ne s'écrivent pas de la même manière , évidemment, c'eut été trop simple sinon !
L'une des nouveautés apparue avec le Zend Framework 1.5 est le Zend_Form.
Ce composant vous permet de créer des formulaires très facilement par l'utilisation de trois méthodes différentes selon votre préférence.
Vous aurez ainsi la possibilité de créer vos formulaires grâce à des arrays, des objets ou enfin des fichiers INI.
Pour chaque méthode, il vous suffira de déclarer les champs et les fonctions à y appliquer puis de laisser Zend_Form se charger de la création du formulaire.
Voici un court exemple avec la méthode array :
$form = new Zend_Form(array(
'action' => '/user/login',
'method' => 'post',
'elements' => array(
'username' => array('text', array(
'validators' => array(
'alnum',
array('regex', false, array('/^[a-z]/i')),
array('stringLength', false, array(6, 20))),
'required' => true,
'filters' => array('StringToLower'))),
'password' => array('password', array(
'validators' => array(
array('stringLength', false, array(6))),
'required' => true,)),
'submit' => 'submit',),));
Ce composant vous laisse une grande liberté de paramétrage pour créer aussi bien des formulaires basiques que des formulaires complexes.Proposé par Clément Péronneaud
Une nouvelle version de Zend Platform, la plate-forme de développement et de déploiement PHP de Zend Technologies, est disponible depuis le 22 janvier 2008.
Les principales nouveautés de cette version 3.6 concernent tout d'abord les performances avec une amélioration de la gestion du cache (cache basé sur les url, cache en utilisant les namespaces, cache en mémoire) et une optimisation de la bande-passante utilisée pour les téléchargements.
Le monitoring a également été amélioré avec un meilleur suivi des erreurs HTTP, des processus d'Apache et des exceptions Java provenant de Java Bridge et avec une nouvelle fonctionnalité permettant de reproduire les problèmes survenus dans un environnement de production sur des serveurs de développement.
Notons enfin une amélioration de la gestion de clusters qui permet de déployer une application PHP sur différents serveurs.
I'm working on a professionnal project using eZ Find extension and I must say that I'm very impressed by this extension and even more by Solr . Last october at the developper day , Paul Borgermans told us a lot of good points about Solr. I was a bit skeptical about the technological blend (PHP + Java) but the search webservice provided by Solr is a very clever solution much more efficient and scalable than the Lucene extension with PHP Java bridge module and its memory problems .
For the project, I added custom sorting on content object attributes or meta attributes and indexing of external contents (not in the eZ Publish database). Solr is pretty well documented and it has an impressive number of options and can be use in any project. If you want to integrate Solr in a PHP project, there is a good article in IBM developperWorks about Solr with PHP where you can find a PHP Solr Client .
La nouvelle version de PostgreSQL a été publiée aujourd'hui avec de nouvelles fonctionnalitées et d'importantes améliorations de performances.
Au programme des nouveautés on retiendra entre autres :
- L'ajout des types ENUM, UUID et des tableaux composites
- La possibilité de choisir la place du NULL lors d'un ORDER BY
- Le support de la syntaxe SQL/XML
- La réutilisation des espaces libérés lors des DELETE/UPDATE
- La validation asynchrone des transactions (Asynchronous Commit)
La liste complète des nouveautés de cette version est disponible dans le changelog.
Site officiel de PostgreSQL
ChangeLog
Télécharger
Proposé par LACHAUD Fabien
Un tutoriel pour CakePHP par IBM
CakePHP est un framework de développement rapide pour PHP qui procure une architecture extensible pour le développement, la maintenance et le déploiement d'applications réduisant les coûts de développement et le nombre de lignes de code écrites par le développeur.
Pour faciliter son utilisation, un tutoriel en plusieurs étapes est proposé, allant de la simple mise en place du framework à l'utilisation avancée du cache pour optimiser l'application.
Système requis :
- Un serveur HTTP supportant les sessions
- PHP V4.3.2 ou plus
- Un gestionnaire de base de données
- Une base de donnée
Tutoriel
Proposé par Clément Péronneaud
Si vous utilisez Apache derrière un Load Balancer tel que HAProxy, ou alors derrière un Lighttpd avec mod_proxy, celui-ci ne verra plus que comme adresse IP cliente l’adresse du proxy, et non l’adresse IP de votre visiteur. Cependant, celle-ci est réécrite par le proxy dans les entêtes HTTP via le champ X-Forwarded-For.
Voilà donc deux choses à ne pas oublier si vous êtes dans une telle configuration :
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common
Après le lancement de la plate-forme e-bourgogne en 2004, la région Bourgogne continue d'apporter son aide au développement économique de la région avec la mise en ligne en septembre 2007 du site J'entreprends en Bourgogne, portail d'aide et de ressources pour les entreprises de la région.

Présenté le 05 février 2008 lors d'une conférence de presse à Paris, le projet repose entièrement sur des technologies libres. Le site a été développé en PHP avec une base de données MySQL et des applications telles que SPIP et EzPublish pour la gestion de contenu ou AKIO pour la gestion des mails.
Le choix des logiciels libres permettra à d'autres collectivités de pouvoir mettre en place un site similaire comme les régions d'Alsace, d'Auvergne et de Bretagne qui semblent déjà intéressées.
Pour en savoir plus
La Bourgogne mène sa politique économique en ligne
Aides aux PME : La Bourgogne pilote en ligne
J'entreprends en Bourgnogne
Créez vos classes PHP à partir de d'une base de données.
Ce plug-in Eclipse (PHP Class Generator Plugin) est un outil permettant de générer automatiquement des classes PHP reflétant la structure de vos tables de base de données. A chaque table est associée une classe, chacune contenant un attribut pour chaque champ en base, ainsi que les méthodes "getters" et "setters" pour récupérer ou affecter une valeur à ces champs. Cet outil est initialisé à partir d'un template XML à créer soi-même contenant les informations que l'on souhaite générer (attributs/méthodes supplémentaires, génération des setters/getters), gérant également les types static/public/private des méthodes.
Ce plugin peut être assez intéressant si l'on développe de cette façon (Objet, une table=une classe PHP) et que vos tables disposent de nombreux champs, les méthodes classiques (getters, setters) seront générées automatiquement pour seulement quelques lignes de commande dans le template XML. De la même façon les méthodes d'insertion et de mise à jour de ligne peuvent être généralisées puisque le plug-in se charge de les définir en fonction de la structure de la table. Rien n'empêche bien sûr d'adapter ces définitions par la suite mais le plug-in peut vous épargner un travail souvent très répétitif.
Lire l'article
PHP Class Generator Plugin
NaturalGlam déploie son site e-commerce en 45 jours
NaturalGlam a mis en place un site d'e-commerce basé sur une plateforme LAMP en seulement 45 jours.
Le site est développé sur une base de Drupal auquel ont été ajoutés des modules afin de satisfaire les besoins du projet. Le choix de l'utilisation des technologies LAMP s'est justifié par le faible coût de l'hébergement ainsi que la quantité de ressources de prestataires compétents dans ce secteur.
Lire l'article sur indexel.net
NaturalGlam
Comparatif MySQL/Ingres sur JDNet
Publié sur JDN, un article fort intéressant compare l'évolution de MySQL et d'Ingres, deux gestionnaires de bases de données relationnelles.
D'un côté, nous avons le SGBD jeunot bien connu sur le web, très utilisé par les sites Internet basés sur l'Open Source et tout juste racheté par Sun Microsystems.
De l'autre, un des concurrents qui se destinait initialement aux grands comptes et administrations, semble avoir perdu dans ce domaine face à Oracle et tente maintenant de renaître dans le monde du libre.
Lire l'article
Proposé par Clément Péronneaud
Prochains webinaires proposés par Zend
Résultat de la contraction des mots 'web' et 'seminar', les webinaires (traduction française qui en découle) sont des conférences web où l'orateur présente en première partie un sujet, suivies de questions-réponses de la part de l'audience.
Suite aux sorties des nouvelles versions de ses applications, Zend propose une série de webinaires sur l'utilisation ou l'optimisation de ces applications et composants (conférence en anglais).
Pour vous y inscrire, suivez les liens ci-dessous présentant chaque webinaire et cliquez sur 'More Informations'.
- Amélioration des performances des applications web avec Zend Platform
- Zend Framework : Authentification
- Zend Framework
Proposé par Clément Péronneaud
Schedule: Unicoding With PHP 6

Andrei Zmievski vient présenter "Unicoding With PHP 6" au fosdem le 23 Février 2008 à 15h au JANSON
Le support d'Unicode est la nouvelle fonctionnalité principale de PHP 6. La présentation a pour but d'en présenter les avantages.
Don't be left behind as the software world moves towards language and cultural sensitivity. Speaking Unicode is all the rage these days and this session will show what PHP has learned and how easy it will be to work with multilingual text.
Cette présentation donnera un aperçu des principales caractéristiques du support de l'Unicode et permettra d'illustrer les nouvelles fonctionnalités d'internationalisation avec une variété de démonstrations sur des sujets tels que:
Il y a quelques temps déjà Damien Seguy m'a demandé si je voulais bien faire une revue de son livre "Sécurité PHP5 et MySQL", j'ai accepté avec grand plaisir et peu de temps après il m'a envoyé un exemplaire (la partie disclaimer comme disent nos amis anglo-saxons).
Le livre passe en revue de nombreuses considérations à prendre en compte lors du développement d'applications web. Bien sur des composantes tiennent du bon sens et sont applicables ailleurs que le web.
Le sommaire (repris du site Eyrolles):
# Risques liés aux applications web
* Introduction à la sécurité des applications web
* Vulnérabilités des pages web
* Formulaires et téléchargement ; valider les données
* Cookies et sessions
# Mesures de sécurité pour PHP
* Installation et configuration de PHP
* Intégrité des scripts PHP
* Risques liés aux bases de données
* Vulnérabilités des base de données
* Mesures de sécurité pour MySQL
# Mesures de sécurité pour les technologies connexes
* Mesures de sécurité côté serveur
* Techniques de sécurisation des applications web
* Mener un audit de sécurité
Le plan est clair est progressif, les aspects simples précédents les attaques plus tordues. Les auteurs rappellent à tout moment qu'il s'agit de faire un compromis entre les différents éléments d'un système dont la sécurité fait partie.
Si vous débutez ou n'avez jamais pris l'aspect sécurité de façon sérieuse je vous recommande vivement d'acheter cet ouvrage. Vous y apprendrez toutes les bases nécessaires.
Pour ceux déjà familier avec la sécurité il servira de référence. Vous pourrez aussi le laisser négligemment traîner sur votre bureau pour le porter à l'attention de vos collègues. Et enfin il vous donnera bons arguments lors des discussions avec vos responsables.
Il y a quelques temps déjà Damien Seguy m'a demandé si je voulais bien faire une revue de son livre "Sécurité PHP5 et MySQL", j'ai accepté avec grand plaisir et peu de temps après il m'a envoyé un exemplaire (la partie disclaimer comme disent nos amis anglo-saxons).
Le livre passe en revue de nombreuses considérations à prendre en compte lors du développement d'applications web. Bien sur des composantes tiennent du bon sens et sont applicables ailleurs que le web.
Le sommaire (repris du site Eyrolles):
# Risques liés aux applications web
* Introduction à la sécurité des applications web
* Vulnérabilités des pages web
* Formulaires et téléchargement ; valider les données
* Cookies et sessions
# Mesures de sécurité pour PHP
* Installation et configuration de PHP
* Intégrité des scripts PHP
* Risques liés aux bases de données
* Vulnérabilités des base de données
* Mesures de sécurité pour MySQL
# Mesures de sécurité pour les technologies connexes
* Mesures de sécurité côté serveur
* Techniques de sécurisation des applications web
* Mener un audit de sécurité
Le plan est clair est progressif, les aspects simples précédents les attaques plus tordues. Les auteurs rappellent à tout moment qu'il s'agit de faire un compromis entre les différents éléments d'un système dont la sécurité fait partie.
Si vous débutez ou n'avez jamais pris l'aspect sécurité de façon sérieuse je vous recommande vivement d'acheter cet ouvrage. Vous y apprendrez toutes les bases nécessaires.
Pour ceux déjà familier avec la sécurité il servira de référence. Vous pourrez aussi le laisser négligemment traîner sur votre bureau pour le porter à l'attention de vos collègues. Et enfin il vous donnera bons arguments lors des discussions avec vos responsables.
Tutoriel pour gérer du SVG avec PHP
Lu sur www.devx.com, un article en anglais propose un tutoriel afin d'apprendre à utiliser du SVG sous PHP.
Scalable Vector Graphics (SVG) est une spécification du W3C. C'est un format de fichier basé sur XML permettant de décrire des ensembles de graphiques vectoriels.
Trois techniques simples sont présentées en début de tutoriel :
- En convertissant directement tout document SVG en document PHP (en modifiant simplement l'extension) et en ajoutant le type MIME 'image/svg+xml' en header
- En incluant le document SVG via les balises 'object' ou 'embed' dans le document PHP
- En générant le code SVG dynamiquement avec la commande 'echo' de PHP
Outre ces méthodes basiques, ce tutoriel propose les bases pour utiliser trois librairies générant du SVG :
- phpHtmlLib
- PEAR::XML_SVG
- PEAR::Image_Canvas
Tutoriel
Proposé par Clément Péronneaud
Le site devshed.com vient de publier un nouveau tutorial dans la série " Using Yahoo! Web Services with PHP 5 ", dans lequel vous verrez comment définir vos propres fonctions PHP5 afin de tirer au mieux parti de l'API Yahoo!
C'est avec des exemples concrets que l'auteur nous montre comment exploiter au mieux le résultat des recherches effectuées avec le service de recherche de l'API Yahoo!. Vous y apprendrez comment créer vos propres fonctions afin de traiter le flux XML retourné lors d'une recherche classique, d'une recherche d'images ou encore d'une recherche de vidéos.
D'autres tutoriels devraient paraître prochainement, toujours dans la série " Using Yahoo! Web Services with PHP 5 ".
Tutorial
Proposé par LACHAUD Fabien
L'ouvrage
est maintenant disponible sur Internet et dans toutes les librairies.
Pour connaitre l'ensemble des informations disponibles sur l'ouvrage et le communiqué, il suffit de sélectionner la ligne de votre choix :
Dans un article publié sur le site sitepoint, Ben Balbo détaille les nouveautés de php 5.3 qui étaient initialement prévues uniquement pour PHP6.
Après avoir expliqué succintement les raisons de ce back-portable, l'auteur établit la liste des nouveautés suivantes en donnant pour chacune un exemple :
Lien vers l'article : What's new in PHP 5.3?
Sortie de la nouvelle version de Drupal
La nouvelle version 6.0 de Drupal, système de gestion de contenu bien connu, vient de sortir.
Beaucoup de nouveautés sur cette version telles que :
- Un système d'installation simplifié
- De nouveaux modules
- Une personnalisation de thème plus facile
- Une version mieux sécurisée
- De meilleures performances et maintenances
- Et pleins d'autres choses...
Annonce officielle
Proposé par Clément Péronneaud
Une faille de sécurité concernant un exploit root local a été rendu publique ce weekend.
Cette faille concerne la version du noyau Linux depuis la version 2.6.17 sortie le 17 Juin 2006 jusqu’au tout récent noyau 2.6.24 (sortie à la fin du mois dernier).
Les codes d’exploitation de la faille sont publiés sur milw0rm.com et nous pouvons trouver :
Le kernel 2.6.24.2 corrige déjà cette faille, il est donc imperatif de mettre à jour son noyau, même si vous n’autorisez aucun accès terminal à vos utilisateurs, il suffit d’une faille dans un de vos scripts PHP/CGI… pour que l’attaquant puisse aisément devenir root sur votre machine (2 cas recensés chez OVH, cf. le forum server dédiés).
A noter que les noyaux de la série 2.4 ne sont pas impactés.
Vous l'avez peut-être remarqué, GLOBALIS, éditeur de ce site, recherche plusieurs développeurs. Si vous êtes intéressés par le langage PHP, si vous souhaitez apprendre, participer à l'enrichissement du contenu PHPIndex et travailler sur des projets variés, venez rejoindre notre équipe.
Seuls impératifs: avoir un diplôme informatique de niveau Bac+2 à Bac+4, et une expérience, même courte, de développement PHP. Les jeunes diplômés sont les bienvenus.
Je suis tombé via le planet PHP sur une liste de 40 points qui font un mauvais programmeur PHP. Je vais essayer de la traduire et de la commenter.
Après 3 release candidates, Drupal 6 est officiellement téléchargeable et exploitable en production.
Les nouveautés majeures par rapport à la branche 5.x sont :
Plus de détails dans l'annonce officielle.
Note : j'ai déployé un site de démonstration sur ma Dedibox : http://drupal6.narno.net
A lire également : le communiqué de presse sur la sortie de Drupal 6.0 (français)
Après 3 release candidates, Drupal 6 est officiellement téléchargeable et exploitable en production.
Les nouveautés majeures par rapport à la branche 5.x sont :
Plus de détails dans l'annonce officielle.
Note : j'ai déployé un site de démonstration sur ma Dedibox : http://drupal6.narno.net
A lire également : le communiqué de presse sur la sortie de Drupal 6.0 (français)
Ce livre sur PHP est destiné à toute personne qui désire se lancer dans le développement web avec ce langage. Il détaille pas à pas le développement d'une application de gestion d'un carnet d'adresses sur Internet.
La conception de cette application prend en comptes différents formats de bases de données (MySQL, MySQLi et PDO) et différentes versions de PHP. Dans un premier temps, l'auteur choisit de décrire les principales fonctions de PHP en prenant des exemples facilement compréhensibles. Il décrit ensuite pas à pas les différentes étapes du développement en s'aidant des exemples de la première partie (accès sécurisés, gestion du carnet d'adresses, gestion des mots de passe, gestion des administrateurs, affichage et exportation des données...). Le dernier chapitre détaille des notions plus avancées comme les contrôles de sécurité, le suivi de la navigation des visiteurs... L'application étudiée est déclinée en trois versions entièrement téléchargeables sur le site de l'éditeur.
Pour voir :
* la table des matières
* Extrait du livre
* Mot de l'auteur
Cliquez sur le lien ci-dessous
L'auteur met la disposition des possesseurs du livre un forum aide: http://livre.hello-design.fr
Proposé par Overdose
For me it's probably one of the most waited feature in eZ Publish after the PHP5 port with eZ Publish 4 ! It's only a beta release but it looks very promising. There's a document in the SVN repository or in the archive explaining new features.
It's based on Tiny MCE rich text editor , so Internet Explorer (including IE7 under Windows Vista), browsers based on Gecko (Firefox ...), Opera and Safari are now supported and unlike the old one, there are not two code bases for two navigator families ! It's also more flexible as we can add or remove buttons and functionnalities (like an underline button). After reading the document and a small test, there is one feature I would like to see, it is the hability to easily customize the drop down list (paragraph, preformatted, headings) with others styles / tags like the style configuration in FCKEditor . It can probably be done with a Tiny MCE plugin but a simple setting in eztinymce.ini file would be a simple but very useful tool !
Article sur le support d'Ajax dans les frameworks CakePHP, Symphony et Zend
4ème et avant dernière partie de la série d'articles lancée par Duane O'Brien sur la découverte de 3 frameworks PHP : Zend Framework, Symfony et CakePHP.
Celui-ci porte sur l'utilisation de librairies Ajax au sein de chaque framework et en pratique il est montré comment ajouter une fonctionalité de "ranking" sur les articles d'un blog, le tout en Ajax. On voit ainsi si les frameworks disposent de base de librairies nous aidant dans cette tâche ou bien si l'on a le choix dans celle que l'on souhaite utiliser.
La 5ème et dernière partie de cette suite d'articles portera sur les scripts "hors framework", comme un script qui s'exécute quotidiennement par exemple - sujet qui sera traité dans cette partie.
L'article
Un nombre important de frameworks est aujourd'hui disponible sur le marché et il n'est pas toujours évident de les différencier. Pour bien choisir, il y a quelques critères à prendre en compte qui vous permettront d'ores et déjà de faire une présélection. Cependant, ce sera à vous de prendre un peu de temps pour tester ces frameworks et voir celui qui répond le mieux à vos besoins. D'autant plus qu'il n'y a pas de framework idéal, à chacun vous y trouverez ses avantages et inconvénients.
Le principal intérêt d'un framework est d'accélérer le temps de développement, de conserver une homogénéité du code et une pérennité dans vos projets, mais aussi de sécuriser plus facilement vos applications.
Dans les plus connus, on trouvera : Symfony, CakePHP, Code Igniter, Jelix, Prado, Solar...
Ils intègrent généralement les mêmes composants : implémentation du MVC, Scaffolding, support de l'internationalisation, système de cache, sécurisation du code (faille XSS)...
Il y a évidement le Zend Framework qui se différencie en proposant une liste de briques que vous pouvez utilisez indépendemment. Par exemple, rien ne vous oblige à structurer vos projets sur une architecture MVC, vous pouvez aussi utiliser votre propre moteur de template.
Donc contrairement aux autres frameworks, ce que certains trouveront sûrement contraignants, il faudra obligatoirement passer par cette étape de choix d'architecture et de mise en place de vos briques.
Voici quelques critères indispensables dans le choix d'un framework :
Article sur l'héritage dans les classes PHP
Le système d'héritage des classes PHP évite les redondances de code et permet au développeur de gagner du temps.
Un bref article, trouvé sur www.phpbuilder.com, démontre ceci avec un exemple simple, demandant cependant quelques notions basiques de la programmation orientée objet.
Lire l'article
Proposé par Clément Péronneaud
Article parut sur ITRManager faisant le point sur la situation de Microsoft en ce début d'année.
Parut ce weekend sur le site d'ITRManager, cet article est le premier d'un dossier réalisé par Hugo Lunardelli consacré à la situation de Microsoft au sein du marché actuel, et traite en ce qui nous concerne à la position de Microsoft vis à vis de l'Open Source. Direction donc le 3ème chapitre de cet article qui décrit les initiatives entreprises par la firme pour inciter les acteurs du monde du libre à utiliser les plateformes MS. On citera donc les améliorations apportées à la plateforme WIMP, l'optimisation des performances de MySQL sous Windows Server, la création des sites webs Codeplex et Port 25 visant à développer la communauté Open Source similairement à sourceforge.
Les prochains articles de ce dossier paraissent tout aussi intéressant que celui là, même si ils n'auront que peu, voir aucun rapport avec PHP, le second est déjà paru et disponible ici.
Lire l'article
Un nouveau record vient de tomber... Actuellement détenu par Damien Seguy avec une piramide à 6 niveaux, comprenant 21 ElePHPants...
Maintenant il faut compter sur Christophe Villeneuve (Alias Hello) qui a pu tout d'abord égaler et réaliser une piramide à 6 niveaux
Il est souvent pas rare de voir un record dépassé par un autre record...
Aujourd'hui, ce fut le cas : 2 records en très peu de temps... Les ElePHPants PHP
Voilà quelques semaines, je me suis décidé à ouvrir mon site dédié à Magento Commerce : Modgento.
Modgento est un site communautaire à destination des développeurs de modules pour Magento. L'objectif est de centraliser la publication des modules et de proposer une plate-forme de publication simple et pratique.
Cette première version permet :
Si vous aussi, vous souhaitez participé au développement de la communauté francophone des développeurs pour Magento Commerce, je vous invite à nous rejoindre sur Modgento.com
Voilà quelques semaines, je me suis décidé à ouvrir mon site dédié à Magento Commerce : Modgento.
Modgento est un site communautaire à destination des développeurs de modules pour Magento. L'objectif est de centraliser la publication des modules et de proposer une plate-forme de publication simple et pratique.
Cette première version permet :
Si vous aussi, vous souhaitez participé au développement de la communauté francophone des développeurs pour Magento Commerce, je vous invite à nous rejoindre sur Modgento.com
Dernière partie sur la série des comparatifs des trois frameworks CakePHP, Symphony et Zend Framework, où Duane O'Brien nous explique comment intégrer des tâches automatisées.
Dans l'exemple, le script permettra de supprimer quotidiennement les articles de plus de 30 jours. Le but est de montrer comment instancier ce genre d'action sur chacun de ces frameworks et comment planifier l'exécution via une tâche « cron ».
Vous pourrez voir qu'il s'agit d'une opération très simple à mettre en place et à intégrer dans ces frameworks.
Retrouvez l'article complet
Cal Evans propose un article pour mettre en place une authentification par OpenId via le composant Zend_Auth_Adapter_OpenId.
Pour rappel, OpenId est un système d'authentification permettant de centraliser vos identifiants à divers services web (AOL, Google, Microsoft ou Yahoo).
L'intérêt est d'avoir un identifiant unique "OpenId" pour vous connecter à plusieurs comptes ou pour vous inscrire rapidement à de nouveaux services supportant le protocole OpenId.
Comme il est rappelé dans l'article, l'avantage du Zend Framework est de proposer des briques totalement indépendantes, le composant "Zend_Auth_Adapter_OpenId" vous permettra ainsi d'implémenter le support OpenId dans une application existante.
Retrouvez l'article complet
Dans le cadre de la "Microsoft Open Specification Promise", Microsoft a annoncé une importante initiative visant à fournir à la communauté des développeurs l'accès à plusieurs de ces protocoles ainsi qu'aux formats de ses fichiers (dont les formats Microsoft Office).
Beaucoup de ces spécifications sont dès à présent disponibles et vont permettre, aussi bien pour les communautés Open-source que les sociétés commerciales, de les implémenter et les utiliser au sein de leurs projets.
A noter aussi que la plupart des protocoles concernés sont couverts par des brevets. Par conséquent, toute distribution commerciale devra s'accompagner d'une acquisition de licence contre rémunération. De plus, nul ne peut encore dire quel sera le niveau de fonctionnalité offert et si les développeurs pourront exploiter ces formats sans perte de fonctionnalité.
Consulter les spécifications des formats Microsoft Office
Source : Zend
Le site DevX.com vient de publier un article intéressant expliquant comment créer ses propres filtres à appliquer sur des images au format jpeg à l'aide de la librairie GD.
Après une brève présentation de la librairie GD et de ses fonctions principales, vous découvrirez plusieurs exemples de filtres créés grâce à cette librairie. Parmi les nombreux exemples proposés, vous verrez entre autres comment jouer sur la luminosité, la saturation ou encore les couleurs de vos images, mais aussi comment appliquer des effets de noirs et blancs, de négatifs ou de peintures.
Sachez néanmoins qu'il existe une dizaine de filtres prédéfinis dans la librairie GD, pouvant parfois vous éviter de réinventer la roue; l'auteur en présente quelques un, toujours accompagnés d'exemples.
Enfin pour terminer vous aurez le droit à une présentation de la technique de convolution de matrice, qui permet de créer des filtres encore plus poussés.
Lire l'article
Librairie GD
Proposé par LACHAUD Fabien
Ce week end, un pote m’a rapporté un Iphone des US. Après m’être amusé avec les fonctionnalités de base telles que la triangulation GSM avec google Maps ou encore les recherches Utube, je me suis lancé dans l’installation de Apache, PHP et MySQL.
La première étape passe par l’installation de SSH et d’un terminal (vt100) sur la bête. Plutôt simple avec tous les sites dédiés à l’Iphone sur le net.
Je suis ensuite passé à l’installation de Apache, PHP et MySQL. En fait, le plus compliqué a été de trouver un dépôt de données “up” disposant de ces applications. Une fois installés, un peu de configuration et le tour était joué.
Un problème subsiste toutefois. La version compilée de PHP (5.2.3) ne dispose que de l’extension mysql, pas de mysqli ni de PDO-mysql et pas de chargement dynamique d’extensions, ça restreint donc les possibilités.
Je vais tout de même continuer mes recherches pour compléter cela, l’intérêt pour moi étant de pouvoir synchroniser une partie de notre intranet sur mon Iphone et donc de disposer d’une version mobile sans pour autant être obligé de souscrire à un forfait 3G auprès de la mafia des opérateurs qui s’entendent pour nous arnaquer en gros!
Par exemple, je dispose déjà d’une version fonctionnelle de notre calendar (gestion des plannings). Il ne me reste plus qu’à configurer une réplication entre notre serveur MySQL et celui installé sur mon Iphone pour que l’application se mette à jour à chaque fois que mon Iphone se connecte sur notre réseau Wifi, autrement dit, dés que je l’active dans nos locaux!
Joli non ?
A suivre…
Un nouvel article de ma part concernant la fonction imagefilter() de PHP 5. Cet article a été publié sur le site Apprendre PHP. Vous pourrez découvrir toutes les possibilités de cette fonction permettant ainsi de réaliser facilement des galeries photos personnalisées.
Pour accéder à l'article : cliquer ici
Il y a quelques temps sur un projet professionnel arrêté prématurément, j'avais développé un jeu de classes PHP5 destinées à produire des graphiques au format SVG.
Et bien le code source vient d'être mis à disposition sur le nouveau site dédié open source de Clever Age sous licence LGPL et a pris le doux nom de CleverSvg.
Voici un rapide exemple d'utilisation du joujou :
<?php require_once('cleversvg.php'); $doc = new csDocument(550, 400, 'SVG test document'); $gradient = new csLinearGradient(0, 0, '100%', '100%'); $gradient->addStop('0%', 'yellow'); $gradient->addStop('100%', 'red'); $doc->addAsDefinition($gradient, 'gradient'); $star = new csPolygon(); $star->setPointsArray(array(array(350,75), array(379,161), array(469,161), array(397,215), array(423,301), array(350,250), array(277,301), array(303,215), array(231,161), array(321,161))); $star->setStroke('blue'); $star->setFill('url(#gradient)'); $star->setStrokeWidth(4); $linkedstar = new csLink(); $linkedstar->setHref('http://prendreuncafe.com/blog/'); $linkedstar->addElement($star); $doc->addElement($linkedstar); header("Content-type: image/svg+xml"); echo $doc->toXML();
Ce qui donne quelque chose approchant ceci. Si vous surfez avec un navigateur vieillissant insensible aux avancées technologiques de son temps, ça donne à peu près ça :

Je suis pour l'instant le développeur principal et mainteneur du projet, et il y a de fortes chances que ce soit le cas pour un petit bout de temps [1]. Une documentation, une liste d'information et support utilisateurs et un bugtracker sont disponibles.
D'autres choses viendront en suivant, dont une librairie destinée à produire des graphes SVG (camemberts, histogrammes, etc.)
J'en profite aussi pour vous faire part de la sortie du projet libre cleverbox, qui permet de déployer et administrer des instances Trac+Subversion en trois coups de cuiller à pot et sans se faire mal.
[1] Je veux dire, y compris après avoir quitté Clever Age à la mi-mars.
Par curiosité, j’ai généré quelques statistiques avec Google Analytics sur la fréquentation du site http://www.wampserver.com pour l’année 2007.
Et grande surprise, sur les 2.3 Millions et des brouettes de visiteurs qui sont venus l’année dernière, la majorité utilisaient le Navigateur Firefox :
Firefox : 1,173,067 soit 49,71%
Internet Explorer : 1,076,285 soit 45,61%
Le reste se répartit entre Opéra et le reste des navigateurs.
Comme quoi la communauté PHP est bien en avance sur le reste du monde ![]()
Un tutoriel sur le Zend_Form par Rob Allen
Le site de Zend vient de publier un article présentant un tutoriel sur leur Zend_Form posté par Rob Allen, auteur du prochain livre "Zend Framework in Action".
Dans ce tutoriel, vous apprendrez très facilement à créer un formulaire de type contact avec Zend_Form en utilisant des objets (cf notre précédent article sur Zend_Form).
Très bien détaillé avec les parties de codes nécessaires et des commentaires, vous aurez dans un premier temps les paramétrages à mettre en place pour réaliser ce tutoriel, puis la création du formulaire et son affichage, avec l'ajout de décorateurs en option et enfin le contrôle du formulaire.
Source de Zend [uk]
Tutoriel [uk]
Proposé par Clément Péronneaud
Nouvelles versions pour Zend Framework
Avec l'arrivée de la version 1.5 de Zend Framework, l'équipe de Zend et toute la communauté de Zend Framework ont investi beaucoup de temps et d'efforts pour réaliser une version 1.0 ayant le moins d'erreurs possibles.
La mise à jour mineure 1.0.4 corrige donc 111 erreurs allant de problèmes critiques à de simples corrections de CSS.
Source
Changelog
Téléchargement
Le même jour, le site annonce aussi la sortie de la version 1.5 RC1 proposant de nouvelles fonctionnalités telles que le support d'Ajax dans les formulaires de Zend_Form ou le support de l'UTF-8 pour les documents PDF.
Une fois encore, la communauté est sollicitée pour tester cette version et retourner à l'équipe de Zend toutes erreurs potentielles via leur outil en ligne.
Source
Téléchargement
Proposé par Clément Péronneaud
Zend Framework : le meilleur Framework à utiliser avec d'autres Framework ?
Selon le site de www.developertutorials.com, Zend Framework a comme grand avantage de pouvoir être utilisé conjointement avec n'importe quel autre Framework.
En effet, Zend Framework utilise ses propres classes, méthodes et librairies pour ajouter des fonctions qui n'existeraient pas dans votre Framework de base et fonctionne donc de façon indépendante. Vous pourrez ainsi manipuler les dates et heures, lier des fils RSS et interagir avec les API de Google même si votre Framework de base n'incluait pas ces fonctions.
Source
Site de Zend
Proposé par Clément Péronneaud
Attention, par cours en ligne, n'allez surtout pas comprendre « cours à télécharger et à étudier sois même », les prix n'en serait d'ailleurs pas justifiés. Ainsi, Zend dispensera des formations complètes, via Internet dans un « environnement de classe virtuelle » et adaptées au niveau de chacun – débutant, intermédiaire ou confirmé.
D'une durée comprise entre 6 et 18h, ces formations aborderons d'une part des problématiques assez classiques :
D'autre part, Zend a axé certaines sessions autour de ses produits et services. On retrouvera donc des formations au Zend Framework ou encore liées au programme de certification Zend (séances de préparation prévues).
Enfin, concernant les prix, il faudra compter entre 600 et 1000 euros la session ou 2750 euros pour un pack contenant entre autre les fondamentaux, PHP Approfondi, une formation à la certification Zend ainsi qu'un voucher pour passer la certification.
Notez de plus que ces formations bénéficient d'un prix « discount » - compter 15% d'économie tout de même- jusqu'au premier avril.