Using PSR-7 in Symfony

PSR-7

PSR-7, the last PHP Standard Recommendation, was adopted by the PHP Framework Interoperability Group on May 19. That PSR defines PHP interfaces representing HTTP messages: request and response (client and server side), uploaded file, URI, streams, PHP superglobals and CGI bindings. The adoption of PSR-7 was a long road well told by Mathew Weier O’Phinney (the main author of the standard) on its blog.

It’s a big step forward in the field of interoperability of PHP libraries and frameworks. In the new age of internet, HTTP is hegemonic, and PHP now have a common high-level standard to describe and produce HTTP messages. PSR-7 opens the gate to a new generation of PHP middleware somewhat similar to Rack, WSGI and Connect.

Back in 2011, Symfony 2 introduced the HttpFoundation component, a PHP library representing HTTP messages with an object oriented API. HttpFoundation is a key in the success of the HTTP-centric approach of Symfony, and it definitely  inspirited the PSR-7 specification. However, PSR-7 and HttpFoundation differ fundamentally in two aspects:

  • PSR-7 messages are immutable, mutability is in the DNA of HttpFoundation
  • in PSR-7, almost everything is stream

Because of immutability it is very hard to make HttpFoundation embracing PSR-7 without a huge backward compatibility break impacting thousands of existing applications and bundles. However, as first explained by Christophe Coevoet during a Symfony IRC dev meeting, creating a bridge allowing to convert HttpFoundation requests and responses to PSR-7 messages and vice versa will provide a first layer of PSR-7 compliance for Symfony. During the development of that bridge, we established that using PSR-7 messages in HttpKernel controllers will also be possible.

Then we worked hard and we finally get the PSR-7 support ready to be released with Symfony 2.7. Better, the PSR-7 support is available for all Symfony versions greater than or equal to 2.3 LTS! Almost 10 days after the standard acceptation, Symfony is the first major framework to support PSR-7 natively.

Let’s see how to use it! First we need to some dependencies:

Considering that you have a working Symfony Standard Edition installation, run the following command to install all required dependencies (the bridge and Zend Diactoros):

composer require symfony/psr-http-message-bridge zendframework/zend-diactoros

The PSR-7 support is now enabled, you can deal with HTTP messages directly in controllers:

This is also possible to use the bridge directly if you you don’t want to install SensioFramewrokExtraBundle.

Because of the conversion to HttpFoundation objects and extra listeners registered by SensioFrameworkExtraBundle, using PSR-7 in Symfony causes an overhead. I’ve created an hello world example that display a query parameters. A version using HttpFoundation and another one using the PSR-7 converter and SensioFrameworkExtraBundle are available on GitHub. As little signifiant as an Hello World app can be, you can take a look at the comparison in the (awesome) Blackfire profiler.

That being said, the recommended way to interact with requests and responses in Symfony is still using HttpFoundation. The PSR-7 bridge should be used only when dealing with middleware and libraries using the new standard. Performances issues can appears with the PSR-7 bridge, especially when dealing with large and streamed requests and responses.

Last but not least, PSR-7 support in Symfony is an illustration of successful collaboration in the PHP world:

Symfony Live 2015 : Construire des applications API-centric avec Symfony

Symfony Live 2015

Je donnerai une conférence de 40 minutes au Symfony Live 2015 qui se déroulera le 9 avril à la Cité Internationale Universitaire de Paris.

J’y parlerai de la conception et du développement d’applications construites autour d’une API REST :

Au cours de ce talk, je présenterai une architecture moderne qui permet de construire des applications performantes, évolutives et interopérables :

Le talk sera didactique et accessible aux développeurs Symfony de tous niveaux. La construction d’une micro-application suivant cette architecture sera présentée pas à pas.

 17 autres conférences atuour de Symfony auront lieu lors du même évènement. Les billets sont en vente sur le site du Symfony Live.

 

PHP 7: Introducing a domain name validator and making the URL validator stricter

PHP Origami

DNS comes with a set of rules defining valid domain names. A domain name cannot exceed 255 octets (RFC 1034) and each label cannot exceed 63 octets (RFC 1035). It can contain any character (RFC 2181) but extra rules apply for hostnames (A and MX records, data of SOA and NS records): only alphanumeric ASCII characters and hyphens are allowed in labels (we’ll talk about IDNs at the end of this post), and they cannot start nor end with a hyphen.

Until now, there was no PHP’s filter validating that a given a string is a valid domain name (or hostname). Worst,  FILTER_VALIDATE_URL was not fully enforcing domain name validity (this is mandatory for schemes such as http and https) and was allowing invalid URLs. FILTER_VALIDATE_URL was also lacking IPv6 host support.

These limitations will be fixed in PHP 7. I’ve introduced a new FILTER_VALIDATE_DOMAIN filter checking domain name and hostname validity. This new filter is now used internally by the URL validator. I also added IPv6 host support in URL validation:

There is still a big lack in PHP’s domain names and URLs handling: internationalized domain names are not supported at all in the core. I’ve already blogged about an userland workaround, but as IDNs becomes more and more popularsa core support by PHP in streams and validation is necessary. For instance, almost all french registrars support them, and even TLDs – such as the Chinese one – are available in the wild in a non-ASCII form). I’ve started a patch enabling IDN support in PHP’s streams. It works on Unix but still lacks a Windows build system. As it requires making ICU a dependency of PHP, I’ll publish a PHP RFC on this topic soon!

Interview à propos de Les-Tilleuls.coop dans J’innove

Les-Tilleuls.coop : un statut Scop qui débride la créativité et l’innovation
Le jeudi 03 Juillet 2014

Créée en 2011, Les-Tilleuls.coop est une agence web spécialisée dans le développement sur-mesure de logiciels e-commerce. Basée à EuraTechnologies, cette Jeune Entreprise Innovante a pris le parti d’organiser son modèle de management selon une organisation coopérative : « à l’origine de la démarche, le mouvement des logiciels libres qui s’appuie sur un esprit communautaire. Je souhaitais recréer cet esprit et l’appliquer dans un contexte entrepreneurial », explique Kévin Dunglas, gérant de l’entreprise et directeur technique.

L’humain est au cœur du projet d’entreprise. L’agence est possédée à 95% par ses salariés et est dirigée par un gérant. Les prises de décision sont ainsi partagées : « chaque salarié coopérateur dispose d’une voix, et ce quel que soit son niveau d’implication financière. Notre mode de fonctionnement se veut démocratique. Tous les salariés participent aux sujets stratégiques de l’entreprise. Les bénéfices sont redistribués équitablement ». Cet esprit libre est aussi une condition à l’embauche : « au bout d’un an d’ancienneté, nous proposons systématiquement au salarié de devenir coopérateur ».

Les effets ?

  • Un salarié fidèle et entrepreneur : « les SSII et les agences web d’une manière générale sont réputées pour leur taux de turn-over important. Ici, nous misons sur l’implication du salarié dans la vie de l’entreprise. Mon but est de redonner du sens au travail ». Cet esprit d’entreprise se ressent au niveau des projets menés pour les clients de l’agence : « un meilleur investissement des salariés, une volonté de toujours mieux faire… ».
  • Un levier d’innovation et de créativité : « Ce statut favorise le partage d’idées. Aussi, j’invite les salariés à travailler fréquemment sur des logiciels libres en dehors de toute contrainte client. Cette liberté leur permet de tester librement de nouvelles applications et ainsi être force de proposition lors de futurs projets à mener ».

Depuis sa création, Les-Tilleuls.coop a toujours été bénéficiaire et des entreprises à forte notoriété lui font confiance : Coyote France, National Geographic, Hema, Virgin Mobile…

Quelques exemples de créations innovantes développées par les coopérateurs Les-Tilleuls.coop :

  • Une plateforme de réservation de voiture accessible via smartphone pour la société Citiz. Un système permet au client d’un opérateur d’auto partagée de garer son véhicule où il le souhaite et au futur utilisateur de repérer en temps réel où la voiture se trouve.
  • Une plateforme e-commerce qui s’adapte selon les canaux de vente pour Alice’s Garden. Dès qu’une commande est passée par un client sur Amazon, PriceMinister…, l’information est remontée au sein d’une application centralisée qui alerte automatiquement le transporteur.

J’innove en Nord Pas de Calais

Les slides du premier sfPot (apéro Symfony) Lillois

Merci d’être venus assister en nombre au premier sfPot qui s’est tenu jeudi dernier à l’Autrement Dit.

Nous y avons discuté de comment réaliser des applications web modernes architecturées autour d’une API REST réalisée avec Symfony et d’un client en JavaScript utilisant des frameworks tels que AngularJS et Backbone.js.

Comme promis, voici les slides réalisées par Alexandre Salomé et moi-même qui y ont été projetées :

Nous espérons vous voir aussi nombreux et enthousiastes lors du prochain évènement qui ne saurait tarder ! Encore merci à Cécile d’avoir organisé cette soirée.

PHP SocialShare 0.2.1 released

I’ve just published a new version of PHP SocialShare, a library allowing to retrieve server-side webpages’ number of shares and share link from social networks.

This release fixes a bug that was breaking the Google support when the number of shares if greater than 1K and use the brand new phpspec 2.0 stable release as spec system.

PHP SocialShare is available on GitHub and installable trough the awesome Composer.

The SocialShare library

Nouvelle réalisation : la boutique Lost In The Supermarket

Fraichement mise en ligne, voici la boutique de vêtements de mode anglaise Lost In The Supermarket.

Elle a été réalisée à l’aide de Prestashop, de Bootstrap et de LESS. Le design est adaptif (responsive) bien que quelques défauts de jeunesse subsistent sur smartphone. Les pages contiennent du balisage sémantique Schema.org afin d’afficher des extraits enrichis dans les résultats des moteurs de recherche. La création graphique est signée Joad Martin.

Lost In The Supermarket

Interview sur Grand Lille TV

Hier, j’ai été interviewé dans l’émission Les rendez-vous de l’éco sur Grand Lille TV pour présenter Les-Tilleuls.coop.

Le premier apéro Symfony lillois (sfPot), c’est le 20 mars

Jeudi 20 mars aura lieu le premier sfPot Lillois à L’Autrement Dit, 14 rue Royale, dans le Vieux Lille.

Organisée par Les Tilleuls et Sensiolabs, cette soirée aura pour thème « Réaliser des applications innovantes avec Symfony 2″.

Les sfPots, ce sont des rendez-vous informels autour d’un verre, destinés aux férus de Symfony, solution open-source permettant le développement d’applications évolutives, fiables, sécurisées et performantes. Ce framework met en avant les bonnes pratiques de programmation PHP et facilite le développement dirigé par les tests. C’est une solution reconnue internationalement, dont la première version fut lancée en 2005.

Ce pot sera animé par Kévin Dunglas, co-fondateur de Les-Tilleuls.coop, et Alexandre Salomé, consultant chez Sensiolabs.

Contactez-nous à press@les-tilleuls.coop pour plus de renseignements !

sfPot Symfony à Lille

Interview dans La Voix du Nord

Photo par Camille Legrand / La Voix du Nord

Photo par Camille Legrand / La Voix du Nord

La Voix du Nord a publié dans son édition du jour un portrait des Tilleuls dans lequel je suis interviewé :

Créée il y a deux ans à Lomme, Les-tilleuls.Coop, société de développement de logiciels, affiche un modèle économique participatif. La société est détenue à 95% par ses salariés. Un mode de fonctionnement « démocratique et plus sécuritaire pour les employés », selon son gérant, Kévin Dunglas.

Dans un paysage économique fragilisé par la crise, Les-Tilleuls.Coop détonne. «Bénéficiaires depuis le début, nous sommes actuellement en période de recrutement », détaille le gérant de l’entreprise et directeur technique, Kévin Dunglas. Spécialisée dans la conception de logiciels et d’applications numériques, la société lommoise vient de s’installer dans le parc d’activité d’Euratechnologies. Un emplacement stratégique, considéré comme le pôle d’excellence économique dédié aux Technologies de l’information et de la communication (Tic).

Née il y a deux ans, sous l’impulsion de trois experts du web, Les-tilleuls.coop compte désormais huit salariés : six développeurs, un directeur artistique et une chargée de communication. Une équipe jeune, à la moyenne d’âge avoisinant les 25 ans. Ensemble, ils développent des sites web, réalisent des plateformes e-commerce, mais également des applications web ou mobile. « Un domaine en constante expansion », souffle Kévin Dunglas. qui recherche deux nouveaux développeurs, preuve de la bonne santé financière de la société.

Salarié et collaborateur

Et pour cause, celle-ci compte déjà quelques grands projets à son actif : les infrastructures web réalisées pour le réseau d’autopartage Citiz, ou la création d’un système d’information pour la boîte Alice Garden, spécialisée dans l’équipement d’extérieur. « Pour ce faire, nous utilisons des logiciels libres, c’est-à-dire dont l’utilisation et la modification sont possibles par tous », explique le directeur. Un choix qui s’inscrit dans une démarche « de partage des connaissances ». « Chacun peut faire évoluer le logiciel ou le personnaliser », détaille Kévin Dunglas.

Mais la particularité première de l’entreprise tient en son mode de fonctionnement. Société coopérative et participative, elle est détenue à 95 % par les salariés. L’Union régionale des Scop et Nord actif possèdent le reste. Devenir associé de l’entreprise constitue un passage obligé pour les employés. « Contrairement à d’autres Scop, un salarié ne peut pas espérer entrer chez les Tilleuls s’il ne veut pas devenir collaborateur. » L’objectif consiste à favoriser la démocratie d’entreprise. « Chaque salarié a son mot à dire sur le fonctionnement de la société, il n’y a pas d’actionnaires extérieurs. » Mieux, les bénéfices sont répartis entre les salariés, redonnant dès lors « un sens au travail et une motivation. » Pour le gérant, c’est indéniable, ces sociétés participatives sont une réponse à la crise : « Les décisionnaires connaissent l’entreprise sur le bout des doigts. Et puis il y a aussi une certaine sécurité : l’entreprise ne peut pas être revendue sans l’accord de l’ensemble des employés. »

Forte d’une situation plutôt favorable, la société n’en finit pas de se développer. Elle tend aujourd’hui à se diversifier en dispensant des formations à destination des spécialistes du web. « Nous avons des compétences très pointue en matière de développement, confie Kévin Dunglas. Généralement les entreprises sont assez frileuses à utiliser les technologies nouvelles et les développeurs ne sont pas formés pour les utiliser. C’est là que nous intervenons. »

Par CAMILLE LEGRAND (La Voix du Nord du 17/02/2014)