Appel à conférenciers pour PHPQuébec

La 7e édition de  la conférence de PHPQuébec se tiendra à Montréal, du 4 au 6 mars 2009. D’ores et déjà, vous pouvez proposer vos sujets de conférence.

Les sessions doivent être données en français ou en anglais.
Les sessions durent une heure, suivi de 15 minutes de questions avec le public.
Les sessions pourraient être enregistrées pour être distribué par la suite.

Vous pouvez proposer votre conférence en ligne, sur le site de l’événement.

PHPQuébec est l’association québecoise des utilisateurs de PHP, comme vous vous en doutez.

[Traduction] 10 mythes injustifiés sur PHP

Ce qui suit est une traduction de 10 PHP Myths Dispelled écrit par Jaybill McCarthy paru en janvier 2008 sur Jaybill.com (que vous pouvez aller lire pour profiter des commentaires des visiteurs)

___

Je suis un développeur PHP. Peut-être même la moitié d’un vrai développeur. En tant que tel, je me suis souvent retrouvé mêlé à des conversations sur le développement des applications web en général et sur PHP en particulier. Je suis continuellement frappé par les mythes, les demi-verités et de vrais mensonges que les gens autant techniques que non-techniques propagent sur cet humble langage de programmation.

Je suis loin d’être un fanatique sur quoi que ce soit de logiciel. Je pense que si vous êtes passionné d’un logiciel, vous ratez le coche. C’est comme si un charpentier était passionné de marteaux au lieu de construction de maisons. En ayant dit cela, je sens que je dois vraiment dissiper quelques malentendus avant qu’ils ne prennent plus d’importance : je suis fatigué d’être pris de haut par les développeurs Java qui croient que leur choix de langage est Le Seul Vrai Chemin(TM). Donc voici ma liste.

Mythe n°1 : PHP n’est pas vraiment un langage orienté objet

J’ai entendu cela de beaucoup de développeurs Java. C’est complètement faux. PHP a un excellent bagage OO. Il y a l’héritage, les classes abstraites, les interfaces, les propriétés et les méthodes. D’accord, il n’y a pas de surcharge de méthodes, mais il y a moyen de contourner cela. Seul le binding est encore un peu immature. Je dirais qu’il y a eu de grands progrès dans les mécanismes OO avec PHP5, mais j’ai aussi écrit beaucoup d’applications PHP4 qui étaient complètement OO. Le seul fait que vous pouvez écrire du code complètement procédural en PHP ne signifie pas que PHP ne peut pas faire d’objet. En outre, le fait que PHP vous autorise à mélanger objet et procédural rend les choses comme le bootstrap vraiment simple.

Mythe n°2 : PHP encourage le mauvais code

Egalement faux. Y a-t-il beaucoup de mauvais code PHP ? Absolument. La barrière d’entrée faible de PHP signifie que beaucoup de gens qui ne sont pas des développeurs formés entrent dans la danse.

Le mauvais code qui en résulte est la conséquence d’une formation faible et d’une mauvaise gestion, non du langage lui-même. Dire que PHP encourage le mauvais code, c’est comme dire que les mateaux encouragent les doigts ensanglantés. Evidemment, vous pouvez vous taper sur les doigts avec un marteau, mais est-ce de la faute du marteau ou vous qui ne savez pas comment l’utiliser correctement ?

Mythe n°3 : PHP ne suit pas le modèle MVC

Je sais que cela paraît ridicule, mais je ne sais pas avec combien de Railers j’ai eu cette discussion. Non, PHP ne fournit pas, de lui-même un framework MVC. Pas plus que Ruby, ou aucun autre langage, d’ailleurs. C’est parce que Ruby et PHP sont des langages, et non des framework d’application. MVC est un design pattern, et non une possibilité du langage. Il existe beaucoup d’excellents frameworks MVC écrits pour PHP. J’aime le Zend Framework. Pouvez-vous faire un appel à la base depuis un script qui générerait aussi le HTML ? Bien entendu, vous pouvez. Est-ce que cela veut dire que vous devez ? Non.

Mythe n°4 : PHP est lent parce qu’il est interprété

Celui ci est insidieux parce que cela semble plausible. En fait, cela devrait être vrai. En pratique, cela ne l’est pas. Le Zend Engine qui fait tourner la plupart des implémentations PHP est incroyablement rapide de base. Combinez le avec un accélérateur, (comme eAccelerator, libre) qui pré-compile et cache le code (et qui l’adapte si on change de disque), et c’est l’une des plate-formes d’applications la plus performante actuellement, même comparé à des choses qui sont traditionnellement compilée comme Java et .NET. Même en écrivant votre appli en C ou C++, en le compilant et en l’intégrant à votre serveur web, vous n’aurez pas plus de performances.

Mythe n°5 : PHP n’est pas de bon EDI ou de débogueur

C’est vrai. Il n’y en a pas un. Il y en a plein. Il y a au moins deux débogueurs, et plein de bons EDIs. Vous pouvez avoir toutes les options que vous voulez, comme les points d’arrêt, la surveillance des variables, l’évaluation au passage de la souris, etc. Pouvez-vous utiliser un éditeur texte et un client FTP ? Bien entendu, vous pouvez. Vous n’êtes certainement pas obligés, je pense.

Mythe n°6 : les applis PHP se ressemblent toutes

Je dois le dire, cela m’a pris longtemps pour comprendre ce que les gens qui déclaraient ça voulaient dire. Au départ, j’ai pensé que la personne disant cela était folle. Après tout, PHP est juste un langage, vous pouvez faire que la sortie soit…comme vous la voulez ! De façon surprenante, j’ai beaucoup entendu ça. Par la suite, j’ai compris que la confusion provenait de profils non-techniques qui confondaient PHP et PHP-Nuke, qui est juste une application écrite en PHP. Elle est complètement personnalisable, mais propose des colonnes et des pavés qui ont tous le même genre d’apparence.

Mythe n°7 : PHP n’est pas vraiment pour les « vrais » développeurs

C’est un autre que j’ai entendu des développeurs Java (et encore plus amusant, des développeurs .NET). Comme le n°2, je pense que cela provient de la faible barrière d’entrée pour PHP. Quasiement tout le monde peut apprendre les rudiments de bidouillage de scripts PHP en un après-midi. Est-ce que cela signifie qu’il n’y a pas la place pour des « vrais » développeurs ? Bon, PHP, comme toute plate-forme de développement est un outil. La façon dont est utilisé un outil varie grandement selon les connaissances et l’expérience de la personne qui l’utilise. J’ai écrit plein d’application PHP de grosse taille, robustes et performantes, et je ne suis pas le seul.

Mythe n°8 : PHP n’est bon que pour les applications web

C’était vrai par le passé, mais de nos jours, il est beaucoup plus universel. Vous avez un interpréteur de ligne de commande qui peut tourner de manière complètement indépendante d’un serveur web (pour des scripts) mais peut continuer à utiliser vos bibliothèques existantes de code PHP. Vous pouvez même créer des applications avec une interface graphique, par PHP-GTK.
Evidemment, le but initial de PHP et sa visée étaient les applications web, mais c’est bien loin de tout ce qu’il peut faire.

Mythe n°9 : Le code PHP est un tas d’ « include » et de « require » qui se cassent facilement

En tant que langage de script, PHP est interprété à la volée. Cela signifie que n’importe quel code qui est exécuté doit être pris sur le disque et le script en question a besoin de savoir où il se trouve. La plus simple (mais la moins bonne) manière de faire est de mettre un « include » ou un « require » qui charge le script externe. Si vous faites cela et que vous renommez le fichier, votre code est cassé, à moins que vous ne modifiez l’instruction erronnée. Un tas d’include et de require peut faire de votre code un tas de spaghetti.

Heureusement, en suivant les règles de la programmation OO, des bonnes conventions de nommage et en utilisant __autoload les include et require sont généralement complètement intules. __autoload est une fonction de callback qui accepte en argument le nom d’une classe. Si vous instanciez un objet, et que le moteur ne sait rien de la classe, il appelle votre __autoload avec le nom de la classe en tant que chaîne. En présumant que vous avez une convention de nommage raisonnable (une classe par fichier, le nom de la classe et le nom du fichier correspondent), c’est plutôt simple de charger la classe au moment voulu. Cela a l’avantage de ne charger que les classes nécessaires pour un script particulier, au lieu de les charge toutes avant même le début du code fonctionnel.

Mythe n°10 : Le code PHP est bourré de requêtes SQL

Jetez un oeil aux applications PHP et vous le verrez. Le SQL a été mêlé avec des chaînes et passé à la base (souvent MySQL) avec les fonctions spécifiques. Cela rend votre code fragile, lourd à déboguer et à maintenir et sujet aux attaques par injection SQL. C’est aussi complètement inutile et peut-être facilement évité. Utilisez simplement une couche d’abstraction comme Zend_DB ou ADOdb au lieu de parler directement à la base.

Voilà, c’est fait. Les dix mythes sur PHP sont littéralement…heu…explosés. Cela ne signifie pas que PHP est sans défaut, mais je pense que peu d’autres outils ont cette mauvaise image.
J’espère que j’ai un peu éclairci les choses.

NdT : les commentaires sur les liens sont de l’auteur, juste traduits. Cet article ne reflète pas complètement mon opinion personnelle, mais je l’ai trouvé intéressant.

Nouvel outil : ODTPHP, manipulez vos fichiers OpenOffice en PHP

Vous connaissez OpenOffice.org, la suite bureautique open source, alternative à MS Office ?

Si oui, vous serez ravi d’apprendre la sortie d’un outil open source pour manipuler les fichiers Open Document Text en PHP, cela signifie que vous pourrez manipuler ce format sur votre site internet, intranet ou application métier.

ODTPHP a déjà des fans, et comme c’est opensource, il y a déjà une amélioration qui vise à éditer les en-têtes et pieds-de-page.

Qui a fait ça ?

Une partie de la Team Anaska, Cyril Pierre de Geyer, auteur de « PHP 5 Avancé », et Julien Pauli, spécialliste du Zend Framework et que vous avez déjà croisé sur Développez.com, entre autres, qui nous a concocté cette classe.

Où puis-je trouver ODTPHP ?

Sur Sourceforge, tout simplement.

Offre d’emploi : développeur PHP chez Hellotipi

Je relaie ici l’offre d’emploi de mr boo aka le fondateur de Hellotipi, site de services pour les familles. Le site vient de sortir une version anglophone, et le travail, apparemment ne manque pas, tant pour cette nouvelle version que pour des projets futurs.

Il recherche un développeur LAMP, en CDI (mais avec matériel fourni), en télétravail pour la rentrée, idéal pour un développeur PHP sensibilisé aux Standards du web.

Voir les détails de l’offre sur le blog de mr boo.

Défi PHP : les difficultés de Symfony

Alors, voilà, je me suis dit, autant coder avec Symfony, puisque j’ai bien compris le principe de ce framework, suivi une formation dessus. Déjà, sachez qu’après une formation, il faut mettre en pratique, sinon, on perd tout…ce qui a été mon cas.

Ensuite, voici les difficultés que j’ai rencontrées avec symfony :

le YAML

J’utilise Eclipse, au départ avec PHPEclipse, mais j’ai basculé vers PDT (PHP Development Tools de Zend) quand j’ai vu que le plugin Symfoclipse ne fonctionnait qu’avec PDT. Ensuite, ce plugin permet d’avoir un éditeur YAML qui signale les fautes de syntaxe par une croix rouge dans la marge, mais sans dire en quoi consiste la faute.

la génération de la DB

CRUD, c’est sympa, YAML une fois bien compris, cela promet beaucoup…sauf que…je souhaite utiliser le type ENUM() de MySQL, et YAML ne permet pas cette utilisation. Il faut bidouiller son code après coup !
Souhaitant distribuer mon application, j’opte pour une normalisation et des tables contenant juste : ID / Libellé pour les données comme « type de bug », « état du bug », « droits utilisateur ».

la récupération des éléments de formulaire

Puis je me suis bien amusée pour savoir comment récupérer les éléments de mon formulaire, afin d’identifier mon utilisateur sur l’appli.

J’en ai trouvé beaucoup sur les helpers pour construire les balises de formulaire (qui génèrent le tag <form> mais pas </form>, ce qui provoque une erreur avec EclipsePDT. Beaucoup de doc sur les validateurs en YAML pour gérer le retour erreur du formulaire (login trop court, champ non rempli, etc.).

J’ai tout d’abord trouvé comment limiter l’accès aux utilisateurs admin, puis comment récupérer les données du formulaire, et créer un objet UtilisateurPeer, puis utiliser son ID pour le retrouver…pour enfin trouver la façon d’authentifier un Utilisateur avec les credentials.

Je vois aujourd’hui, l’ajout d’une doc sur le site de Symfony : les formulaires en action

Pour conclure : je n’ai pas rendu mon code, car il est loin d’être terminé. Mais je souhaite terminer mon script, donc je continue à plancher dessus. Et j’en donnerais des nouvelles sur ce blog.

Défi PHP : coder un bugtracker avec un framework

L’équipe PHP de Développez.com lance un challenge aux développeurs PHP : coder un bugtracker avec un framework. Le but étant de découvrir un framework, le faire avec son framework maison n’est pas envisageable.

Vous avez donc jusqu’au 7 juillet pour envoyer par e-mail votre application de bugtracking. Le cahier des charges est volontairement assez laxiste pour vous permettre de faire une application minimale.

Voici quels seront les critères d’évaluation :

Évaluation
Nous étudierons les propositions selon les critères suivants :

* Bon fonctionnement de l’application : 30% du critère de réussite ;
* Des efforts notables pour que le code soit écrit selon les standards définis par le framework choisi (organisation des répertoires, tabulations, motifs de conception…) : 30% du critère de réussite ;
* Réutilisation d’éléments existants si nécessaire (sauf pour le cœur de l’application bien sûr) : 15% du critère de réussite ;
* Sécurité minimale contre les failles courantes (XSS, CSRF, injection…) : 15% du critère de réussite ;
* Un minimum de commentaires : 10% du critère de réussite.

Mon conseil : pensez au principe KISS (Keep It Simple Stupid), faites simple et qui marche.

Je compte participer à ce challenge en utilisant Symfony, et j’espère avoir le temps de rendre une application.

A propos du choix d’un framework

Trouvé sur le forum de Développez :

Je dirais que n’importe quel framework demandera toujours un apprentissage qui est plus ou moins long surtout selon la tournure d’esprit de l’apprenant, la « complexité » d’un fonctionnement est un truc relatif à chaque personne.

Par contre, il y a bien 2 type de bases de code qui correspondent à mon avis à deux attitudes de developpeurs :

Les « englobants », type symphony qui se veulent très structurants. On gagne du temps mais en adhérant à la conception des gens qui font symphony de ce qu’est une appli web.
A mon avis ça botte les gens qui s’éclatent à utiliser des applis existantes et qui n’adorent pas se poser des questions de conception.

Les « librairies de code », type ZF qui propose mais n’impose pas grand chose.
Avec il reste plus de travail pour aboutir à une appli « finie » mais aussi à mon avis plus d’espace d’innovation et de création pour le developpeur.
Ca botte les gens qui s’éclatent à ne pas réinventer la roue mais qui ont envie de faire les choses à leur manière.

Comme c’est bien dit !

Revue : 6 outils de bookmarking opensource (del.icio.us like)

Motivée à créer un Univers Netvibes pour mon entreprise, je teste les outils qui nous permettent de publier du contenu de manière collaborative, de manière à ce que chacun puisse intervenir dans son domaine de compétences.

Aujourd’hui, j’ai testé ceux que j’ai trouvés et téléchargés hier, parmi les Aggrégateurs de favoris (del.icio.us-like) ou gestionnaires de liens.

J’ai donc été chercher sur le web, qui m’a donné GetBoo, et puis j’ai pensé à chercher directement sur SourceForge, dans la bonne catégorie. Mes critères quand au choix de l’outil étant : open-source, en PHP et pas trop ancien (avec de l’Ajax si possible, et en tout cas, une bonne ergonomie).
J’en ai testé 6.

communitynews

Tout d’abord, communitynews : l’outil est en Python, donc ne m’intéresse pas tant que cela. Exit communitynews.

Pligg

Pligg home extrait

Ensuite vient Pligg, tout d’abord, télécharger la dernière version stable…souci, il est toujours en bêta (la marque de l’appli web2.0) mais prometteur. De plus, pour le télécharger, il faut au préalable se créer un compte sur le forum. Je le fais, car j’ai très envie de le tester.
Il s’agit d’un gestionnaire de news (le nom aurait dû me mettre la puce à l’oreille), genre Digg ou Tomateo, mais il permet bien de mettre des liens et leur contenu (avec en plus la possibilité de voter pour les mises en avant).CSS à refaire

Pligg est moderne, bien pensé, avec plein de fonctionnalités (trop?) mais surtout les messages d’erreur ont leur CSS à refaire, car ils arrivent comme un cheveu sur la soupe.

Avant de l’adopter, je teste ceux qui restent.

GetBoo

Aperçu de GetBoo

GetBoo (pour Get Bookmarks) est récent, opensource, en PHP/MySQL. Après téléchargement, je lis le README et l’INSTALL, qui m’apprennent que je dois installer PEAR. Qu’à cela ne tienne, avec mon WampServer, c’est très simple, en deux minutes, c’est fait.
Ensuite, je m’aide de l’installeur web (formulaire) pour configurer ma base de données. L’installeur n’arrive pas à se connecter à ma base. Soit.
Je modifie le fichier de config à la main, afin de spécifier mes préférences, l’outil n’arrive pas à se connecter à ma base de données. Il utilise le package MDB de PEAR.

Aujourd’hui, GetBoo me laisse encore un goût amer en bouche, car je n’arrive pas à obtenir la connexion à la base de données. Si quelqu’un a explication, je suis encore preneuse (pas envie de débooguer toute l’appli), je soupçonne un problème de version, je travaille avec PHP 5/MySQL 5, et j’ai pas spécialement configuré PEAR.

Scuttle

Aperçu de Scuttle

Ensuite, la révélation vint de Scuttle. Scuttle est un outil de bookmarking, qui permet de mettre un utilisateur en favori dans sa Watchlist, qui propose des flux RSS, et des bookmarklets.

Cet outil n’est pas pour les faibles, il n’existe pas, à ma connaissance (ou elle est bien cachée) de doc d’install. Au flanc, j’ai donc commencé par créer la base de données + l’utilisateur attaché à la DB. Ensuite, j’ai modifié/créée le config.inc.php en m’inspirant du fichier par défaut. Il est à noter que l’utilisation de mysqli ne fonctionnait pas, je me suis donc rabattue sur mysql. Enfin, j’ai activé le mod_rewrite d’Apache, afin de profiter de toutes les fonctionnalités.

La page s’affiche bien, hormis un joli message concernant les locales (oui, l’application est traduite en plusieurs langues).
Warning: setlocale() [function.setlocale]: Passing locale category name as string is deprecated. Use the LC_* -constants instead in C:\wamp\www\scuttle\includes\php-gettext\gettext.inc on line 131
Hormis ce gros détail (réglé par un error_reporting(0); dans le fichier de config), l’outil est ce que je cherche. Il est en version Alpha, et en consultant la fiche Framasoft de Scuttle, j’apprends l’existence de forks : ScuttlEDU pour les enseignants et leurs étudiants et surtout SemanticScuttle.

Scuttle n’étant plus développé depuis de nombreux mois, nous avons entrepris de le remettre en route en y ajoutant des possibilités de structuration des tags.

(Eric Dané)

Semantic Scuttle

Aperçu de SemanticScuttle

Avant de crier victoire, j’ai donc testé SemanticScuttle, cette fois-ci on a une documentation, mais forte de ma première installation, j’y suis encore allée au flanc.
SémanticScuttle offre la possibilité d’imbriquer les tags les uns dans les autres, de rendre équivalents deux tags (fr et francais, par exemple, mais pas français, car il y a un petit souci avec les charset pour le moment) et les vignettes des sites web.
Adopté pour moi, il me reste à le faire adopter à mes collègues.

Bookmarks4U

Par acquis de conscience, j’ai été tester Bookmarks4U. Sur la page d’accueil pour le télécharger, il est tout de suite dit :

This Project will NOT be updated ANY MORE.

ce qui refroidit un peu. Mais c’est le premier de ce genre de produit, leur ancêtre un peu, je me dois de le tester. Je l’installe tout bien et au moment d’aller sur la page, parse error !
En lorgnant dans le code, je vois une variable nommée $row[public], or en PHP5 public est devenu un mot-clef…donc cette notation, à bannir pour vos tableaux, pose un problème de portabilité. Utilisez donc des quotes autour des index de vos tableaux, svp. (cf. Why is $foo[bar] wrong?).

14 mai 2008 : PHP et Silverlight, développement d’applications riches

Après avoir eu des interventions sur XUL, Flex et Ajax, l’AFUP vous propose le 4è concurrent web 2.0 : Silverlight.

Des intervenants spécialistes de PHP, de chez Microsoft viennent présenter Silverlight. Une occasion unique de poser vos questions !

Après nos rendez vous sur XUL, Flex et Ajax/HTML5 venez suivre avec nous ce dernier opus sur la technologie de Microsoft : Silverlight.

Informations sur le contenu sur le blog de Christophe Lauer

La conférence s’adressera principalement à une audience technique et nous montrerons pas ma le code : du PHP bien entendu, mais aussi du XAML, du JavaScript, et sans doute du C# et du VB.NET 😉

Inscrivez vous sur le site de l’AFUP (le nombre de places est limité)

Forum PHP 2008 : Appel à conférences

Le forum PHP 2008 aura lieu les 8 et 9 décembre 2008, au même endroit que l’année précédente, à l’ASIEM, dans le 7è arrdt. Il s’agit de deux journées de conférences et d’atelier sur PHP, avec du technique autant que des rapports d’expériences.

Les deux thèmes de cette année sont :

Web services professionels
et

Grands projets en PHP : organisation, méthodes et bonnes pratiques.

L’AFUP lance son appel à conférences. Cette année, vous devez proposer votre conférence en ligne.

29 avril 2008 : Industrialiser les développements PHP, le cas e-TF1

Un nouveau RendezVous AFUP avec un retour d’expérience de e-TF1.

Il y a 50 places, et ce RendezVous a lieu à la FIAP (Paris 14è).

Inscrivez vous vite tant qu’il reste de la place !

e-TF1 vous propose de découvrir sa méthodologie et ses outils permettant une réelle industrialisation des projets PHP.

[+ d’infos] site AFUP

La rencontre suivante sera le 14 mai 2008, sur Silverlight.

Evénements PHP en avril : à vos agendas

Idée trouvée en lisant la récap sur le site de Sébastien de Bollivier.

16 avril : Ingres et PHP (Contribuez à PHP et Ingres au travers du driver PECL)

17 avril : journée ezPublish – 14h à 8h30

22 avril : apéro PHP – 20h

29 avril : Industrialiser les développements PHP, le cas eTF1 – 20h00 à 21h30

25 mars 2008, Paris : Outiller la qualité en PHP

L’AFUP organise le 25 mars 2008 un rendez-vous intitulé Outiller la qualité en PHP (Stratégie, réflexes et bonnes pratiques pour un développement web durable.
). C’est un évènement gratuit et ouvert à tous qui vous permettra de rencontrer d’autres développeurs : et c’est sur inscription.

  • Date : 25/03/2008
  • Horaire : 20h00
  • Capacité : 50 places
  • Lieu : La Cantine
    151 rue Montmartre, 12 passage Montmartre
    Galerie des Panoramas, 75002 Paris

Je fais partie du bureau de l’AFUP !

Suite à une conférence où sur une assemblée de 40 personnes, seules 5 ont levé la main pour signaler qu’elles faisaient du PHP, je me suis dit qu’il fallait que je m’investisse un peu plus pour défendre PHP. Or, je fais partie, depuis 3 ans de l’AFUP : Association Française des Utilisateurs de PHP. Quoi de plus normal que de m’investir au sein de cette association qui promeut PHP auprès des professionnels.

Pour compléter le bureau, je suis donc vice-secrétaire. Comme vous pouvez le voir, nous sommes pour le moment deux vice-secrétaires, et donc l’un de nous deviendra vice-trésorier.
Bureau AFUP 2008