AFUP Forum PHP 2020 Baromètre Planète PHP

La parole est aux speakers : Cyrille GIQUELLO

Jusqu’à l’AFUP Day 2020, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Valider les données sans copier/coller

Je dois valider les données quand on me les présente via l'API, mais aussi via les Controller. Ah mince, je dois encore les valider sur le Client pour plus d'UX ... Hop, je vais copier/coller les règles. Non! Ce n'est pas bien ! Nous allons voir en application avec Laravel comment n'exprimer qu'une seule fois les règles de validation des Models et comment elles seront automatiquement exploitées dans le Back (PHP) et dans le Front (Javascript).

En ligne
03/07/2020
15:10-15:30

Tu fais partie des personnes qui poussent l’Open Source, comment ça se traduit dans ton travail et avec tes équipes?

Dans mon quotidien il y a deux façons de pousser de l’Open Source.

Il y a tout d’abord, et principalement, la contribution aux projets de code libre : tous ces logiciels et librairies que nous utilisons en permanence (et à tour de bras 😉 ). Quand on a perdu du temps à cause d’un manque de documentation, et bien en échange de tout ce travail que l’on n’a pas eu à faire, on prend du temps pour enrichir cette documentation ; Quand un bug nous rend fou depuis des heures, on prend (encore) le temps de le déclarer sur le bugtracker avec la description du problème, le moyen de le reproduire. Et si après des heures de surchauffe neuronale on a trouvé un correctif, on prend le temps de discuter sur le bugtracker, et mieux, quand c’est possible, de proposer un pull-request.
D’autre part, d’un aspect plus « politique », je propose toujours aux clients de publier nos travaux sous licence libre (et en open source). Ce n’est bien entendu pas toujours possible car des fonctionnalités (rarement techniques d’ailleurs) apportent une valeur concurrentielle que les clients n’ont pas envie de partager, ce qui peut se comprendre. Mais quand il s’agit d’un projet financé par des fonds publics alors là j’insiste très fortement pour que le travail réalisé soit « libéré ».
Les codes libres nous apportent énormément de savoir-faire, pour apprendre et gagner en compétence, pour l’utiliser et gagner du temps (et de l’argent), alors je trouve injuste de ne pas contribuer en retour par de la documentation, des corrections, des traductions…

Tu fais du Java, du PHP, et du JS. Que t’a appris le fait de coder dans plusieurs langages ?

Effectivement, ce sont mes 3 technologies de prédilection.

Alors « autrefois » quand PHP était bébé, il était vraiment un langage de « template » qui n’avait pas vocation à implémenter des règles de gestion mais de faciliter la vie pour construire des pages web. À cette même époque pour faire du Web, j’utilisais aussi le langage Perl pour lequel existait tout plein de packages super efficaces, ainsi que le serveur Zope en Python qui apportait le concept de « serveur d’application ». À l’époque, les dinosaures étaient déjà morts, mais PHP n’était vraiment pas dans le viseur des « informaticiens ».
Pour la « vraie » informatique j’utilisais Java qui fonctionnait partout, même avec AIX sur des main-frame IBM. Java apportait un langage objet fortement typé facilitant son industrialisation, un environnement de serveur d’application avec toute l’abstraction nécessaire à des services répartis et interopérables (ORM, RPC, SOAP, Message Queue, Cache, JMX…). Pour des éléments très spécifiques comme la cryptographie, le multi-threading, les communications inter-applications Java c’était le top. Avec JNDI on pouvait même lui ajouter du code en C/C++.
Et puis sont arrivés quelques créateurs de code autour du berceau de PHP, comme Zend Technologies (Zend Framework) et Fabien Potencier (Symfony), et l’histoire de PHP pouvait changer de cap. Je suivais les avancées, je commençais à réaliser des projets en PHP en complément des projets en Java, et je me suis retrouvé ainsi à pratiquer les 2 technos au quotidien pendant de nombreuses années. Mais depuis 3 ans c’est PHP qui a gagné mon quotidien et je ne fais quasiment plus de Java. Effectivement, les frameworks et le langage PHP ont tellement évolué qu’ils sont opérationnels pour des usages professionnels et industrialisés. Son éco-système est assez mûr pour remplir les mêmes missions qu’avec Java, même s’il n’a pas tous ses atouts.
Et pour le Javascript ? Dans les années 2000 on faisait du Front web avancé avec Flash (et son ActionScript) puis Flash est mort, alors je fais du Javascript, c’est incontournable.

Quelle importance donnes-tu à la validation des données dans le développement d’un projet ?

Ah! Le sujet qui fait « ch**r » les devs qui n’ont pas compris que le code c’est de la manipulation de données, et que ces données sont bien souvent la finalité de notre travail.

Plus sérieusement, aujourd’hui les projets sont fait de programmes multi-tenants: un peu de pages web, quelques scripts, des endpoints d’API et pourquoi pas quelques applis métiers. Une conception du code en architecture n-tiers est donc nécessaire, à minima selon le Model-Vue-Controller extrapolé à tous les étages. Les données se déplacent et se transforment au fil des échanges entre modules, librairies, SGBD(R) et autres acteurs ; ce qui rend nécessaire de s’outiller pour en assurer la maîtrise. Ajoutons la contrainte du « Time To Market » qui demande souvent des changements de structure des données.
Ma réponse est clairement : la validation des données a une importance primordiale.
Ma contribution à l’AFUP Day portera donc sur la capitalisation de cette validation des données : comment en éviter au maximum sa re-définition dans les différentes « couches » composant le projet. Je présenterai ma façon de penser et pratiquer la chose avec un exemple d’implémentation, en PHP of course, utilisant quelques librairies libres.

Depuis le temps que tu en fais, tu as dû en voir des vertes et des pas mûres: quelle est la validation la plus farfelue que tu as pu rencontrer ?

Je ne retrouve pas les farfelues dans ma mémoire, mais c’est sûr qu’il y en a.
Me revient à l’esprit:
– des visiteurs refusés par une plateforme parce que leurs noms chinois ne comportaient qu’un ou deux caractères ;
– la troncature silencieuse des `varchar` par MySql détectée qu’après plusieurs semaines de collecte de données …

Le speaker

Cyrille GIQUELLO
Cyrille GIQUELLO
Un intérêt certain pour des TICs et des hommes. Tombé dès son plus jeune âge dans la soupe à octets, c’est avec dextérité que Cyrille Giquello pourra interagir avec vos systèmes d’information, qu’ils soient hétéroclites ou classés EAL3, en créant du code en Java ou PHP à base de logiciels libres.

Autres interviews

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation des cookies pour améliorer votre navigation. plus d'infos

1. Qu’est-ce qu’un cookie?

Un Cookie est un petit fichier texte enregistré sur votre terminal (ordinateur, tablette, smartphone, etc.), à l’occasion de la consultation d’un service en ligne grâce à votre logiciel de navigation. Il permet à son émetteur d’identifier le terminal dans lequel il est enregistré, pendant la durée de validité ou d’enregistrement du Cookie. Lors de la consultation de notre site Internet, des informations relatives à la navigation de votre terminal sont susceptibles d'être enregistrées dans ces fichiers dits "Cookies". Ces derniers sont installés sur votre terminal, sous réserve des choix que vous auriez exprimés concernant les Cookies et que vous pouvez modifier à tout moment.

2. A quoi servent les cookies émis sur notre site ?

Seul l’émetteur d’un cookie est susceptible de lire ou de modifier les informations qui y sont contenues.
Les cookies utilisés sur notre site permettent :

3. Vos choix concernant les cookies

Vous disposez de différents moyens pour gérer les cookies. Tout paramétrage que vous pouvez entreprendre sera susceptible de modifier votre navigation sur notre site et sur Internet en général et vos conditions d'accès à certains services de notre site nécessitant l'utilisation de cookies. Vous pouvez à tout moment exprimer et modifier vos souhaits en matière de cookies, par les moyens décrits ci-dessous. L'accord sur les cookies L'enregistrement d'un cookie dans un terminal est essentiellement subordonné à la volonté de l'utilisateur du terminal, que celui-ci peut exprimer et modifier à tout moment et gratuitement à travers les choix qui lui sont offerts par son logiciel de navigation. Si vous avez accepté dans votre logiciel de navigation l'enregistrement de cookies dans votre terminal, les cookies intégrés dans les pages et contenus que vous avez consultés pourront être stockés temporairement dans un espace dédié de votre terminal. Ils y seront lisibles uniquement par leur émetteur.

Le refus des cookies Si vous refusez l'enregistrement de cookies dans votre terminal, ou si vous supprimez ceux qui y sont enregistrés, vous ne pourrez plus bénéficier d'un certain nombre de fonctionnalités qui sont néanmoins nécessaires pour naviguer dans certains espaces de notre site. Tel serait le cas si vous tentiez d'accéder à votre compte ou à votre abonnement qui nécessite de vous identifier. Tel serait également le cas lorsque nous, ou nos prestataires, ne pourrions pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par votre terminal, ses paramètres de langue et d'affichage ou le pays depuis lequel votre terminal semble connecté à Internet. Le cas échéant, nous déclinons toute responsabilité pour les conséquences liées au fonctionnement dégradé de nos services résultant de l'impossibilité pour nous d'enregistrer ou de consulter les cookies nécessaires à leur fonctionnement et que vous auriez refusés ou supprimés. Les choix offerts par votre logiciel de navigation Vous pouvez configurer votre logiciel de navigation de manière à ce que des cookies soient enregistrés dans votre terminal ou, au contraire, qu'ils soient rejetés, soit systématiquement, soit selon leur émetteur. Vous pouvez également configurer votre logiciel de navigation de manière à ce que l'acceptation ou le refus des cookies vous soient proposés ponctuellement, avant qu'un cookie soit susceptible d'être enregistré dans votre terminal. Pour la gestion des cookies et de vos choix, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d'aide de votre navigateur, qui vous permettra de savoir de quelle manière modifier vos souhaits en matière de cookies. Selon votre navigateur, consultez le lien ci-dessous pour configurer votre navigateur et refuser les cookies :