Croquis avec PHP Russie 2019: code propre, magie noire



Le 17 mai, s'est tenue à Moscou Infospace la première conférence professionnelle pour les développeurs PHP PHP Russie 2019. Après une longue pause, ils ont reçu une plate-forme complètement sol pour eux; dans l' annonce, nous l'avons comparé au stade, que le peychpishnikov, l'une des équipes de la "division informatique supérieure", n'avait pas. Et le "stade" a rencontré sa première saison au moins avec dignité, à la différence du prototype de football qu'il est difficile de faire une séparation stricte entre les joueurs et les fans.

Pendant la période de la «grande glaciation glacée» - les grandes conférences PHP en Russie n'ont pas eu lieu depuis neuf ans - la communauté autour de la langue a besoin d'un tel lieu de rencontre. En même temps, de grands espoirs étaient mis sur l'événement, et la tâche de plaire à tous ceux qui étaient intéressés était considérée comme extraordinaire. Mais la peur a de grands yeux, et la paranoïa saine a une bonne vision périphérique: l'expérience des événements informatiques de notre côté organisateur, ainsi que la puissance de la «magie PHP» du côté du comité de programme et l'autorité de ses participants dans l'industrie, nous ont permis d'organiser un événement mature. du premier coup.

Près de 500 personnes sont arrivées en PHP Russie. L'audience en ligne était également assez importante - plusieurs centaines de téléspectateurs connectés. La base du programme était «cimentée» 22 rapports, dont cinq d'éminents conférenciers étrangers, ainsi que trois réunions et performances dans le format d'improvisation Unconference dans un flux séparé.



La conférence s'est déroulée en trois volets , et choisir où aller serait pénible si ce n'était l'occasion de regarder plus tard les émissions de tout ce qui s'est passé dans le programme principal.

Alexander Makarov, co-organisateur de la conférence
- Nous, au comité de programme, avons longuement réfléchi et finalement secoué la grille pour que le puzzle se développe: nous avons abandonné l'idée de mettre les anglophones dans un courant séparé, nous avons cherché à équilibrer les rapports. Relativement parlant, pour que les plus touchés se mettent en parallèle et que personne n'attire la majorité du public. Bien sûr, il y avait des connecteurs conceptuels à l'intérieur de chaque piste: par exemple, juste après le discours de Dave Liddament, qui, parlant de l'analyse statique du code PHP, a accordé beaucoup d'attention à PHPStorm, le rapport de Kirill Smelov, où l'appareil pour cet IDE a été trié, a commencé dans la même pièce une histoire sur les innovations de PHP 7.4 a été suivie d'une présentation sur 8.0.

À propos des sujets


Comme prévu , la part du lion des performances a été construite autour de sujets spécifiques à PHP, en grande partie très, très hardcore.

Parmi les principaux vecteurs d'intérêt de la conférence, l'avenir du langage lui-même, son architecture et sa normalisation, la programmation asynchrone en PHP, ses meilleures pratiques et capacités implicites, le travail avec des frameworks spécifiques et même l'apprentissage automatique utilisant la pile PHP ont été mis en évidence.



Documents clés


Le comité de programme a scrupuleusement abordé la sélection des rapports, il a donc été problématique d'identifier les plus «cool»: il n'y avait pas franchement de blocages dans le programme, du moins selon les résultats des premiers retours des invités. Ainsi, à titre d'exemple, nous avons dû distinguer plusieurs des éléments suivants:

  • les plus fréquentés;
  • le plus attendu;
  • le plus riche en surprise.



Nikita Popov: propriétés typées et plus encore. Qu'est-ce qui arrive en PHP 7.4?




Nikita Popov, l'un des développeurs principaux les plus actifs et les plus éminents de PHP lui-même, est à juste titre entré dans les têtes d'affiche de la conférence. Son rapport est un croisement entre un journal des modifications avec des commentaires d'auteurs (plus des exemples de code) et une excursion visionnaire dans l'avenir de la langue. De manière cohérente et succincte, Nikita a expliqué ce qui nous attend en PHP dans la prochaine version et au-delà.

Selon le calendrier estimé, la version alpha de la version 7.4 aura lieu le 6 juin 2019 et la version 7.4 de la GA sera déployée le 21 novembre. Eh bien, un an plus tard, en décembre 2020, les «huit» attisés par les rumeurs seront dévoilés.

La principale chose qui sera implémentée en PHP 7.4:

  • propriétés typées;
  • FFI - Foreign Function Interface, pour travailler avec des fonctions externes en C;
  • fonctions fléchées;
  • - préchargement;
  • - opérateur ??= ;
  • - types de retour covariants;
  • - liens faibles (WeakReference);
  • - ajout d'un opérateur pour les tableaux.

L'innovation la plus attendue dans la prochaine version est peut-être la possibilité de définir des types pour les propriétés de classe. Il est à noter qu'une telle propriété doit nécessairement être explicitement initialisée, et si sa valeur par défaut n'est pas spécifiée, elle ne deviendra pas nulle - non, dans une telle situation, une exception sera levée. De plus, entre autres, les propriétés typées aideront à traduire en PHP quelque chose comme celles qui manquent encore dans le langage des types d'intersection. En d'autres termes, spécifiez plusieurs types d'arguments à la fois.

Le deuxième changement majeur de PHP 7.4 est le début des fonctions fléchées. Ce sont des fonctions anonymes d'une ligne - inutiles, comme certains développeurs en sont sûrs, du sucre syntaxique, bien que d'autres le trouvent tout de même utile.

Vous ne pouvez pas non plus négliger l'opérateur ??= , qui était auparavant absent dans la langue. Voici ce qu'il fait: si le paramètre de gauche n'existe pas dans l'expression ou est nul, la valeur du paramètre de droite lui est affectée.

Parmi les innovations probables qui sont encore en discussion, les génériques ont été mentionnés. Cependant, Nikita a immédiatement fait une réserve que leur mise en œuvre complète n'est pas une tâche facile.

Quant aux fonctionnalités considérées comme obsolètes dans la version 7.4, il y en avait plusieurs. Le traitement de l'opérateur ternaire de gauche à droite a été jeté dans la poubelle de l'histoire - dans le G8, cette syntaxe générera une erreur. La priorité de l'opérateur de concaténation sera également réduite: s'il est utilisé avec les opérateurs d'addition ou de soustraction, ils seront traités en premier.



À la fin du discours, Nikita a été inondé de questions auxquelles il a essayé de répondre aussi objectivement que possible, grâce auxquelles les auditeurs ont reçu plusieurs conseils précieux.

Nikita Popov:
- Je pense que les collections typées seront sous forme de génériques.

Dmitry Stogov: La chose la plus intéressante en PHP 8





La ligne, lancée par Nikita Popov, a été poursuivie par un autre contributeur de premier plan au cœur de PHP - Dmitry Stogov, ingénieur en chef chez Zend Technologies. Il a parlé d'un avenir un peu plus éloigné de la langue - à propos de la version sacramentelle 8.0. Ces dernières années, il s'est concentré sur l'amélioration des performances PHP et a construit son histoire avec le même accent.

Pendant une décennie et demie, la langue a "accéléré". Des gains de performances significatifs ont été réalisés avec les versions 5.1 et 7.0. À l'ère des Sept, la croissance a été régulière: augmenter la vitesse d'exécution du code d'une version à l'autre n'était pas radical. Cependant, PHP 8.0 promet aux développeurs un sac cadeau. Ils attendent beaucoup de choses intéressantes.

Nous disons "intéressant" - signifie JIT? Pas vraiment. Oui, en effet, la compilation dynamique juste à temps promet une augmentation des performances dans la version 8.0, mais ... uniquement dans les tests synthétiques, dans les applications réelles, même un ralentissement est possible, bien qu'insignifiant. Cependant, des améliorations sont possibles.

Puis la «viande» a commencé: Dmitry a approfondi les bases de PHP et JIT, expliquant en cours de route «ce qui ne va pas avec JIT», et a partagé avec le public comment JIT, le mécanisme de préchargement et FFI et pour en raison de ce qu'ils sont conçus pour augmenter les performances du code PHP.

La triade ci-dessus ouvre de nouvelles utilisations pour PHP. Il sera possible d'écrire des extensions directement en PHP, de connecter des bibliothèques C tierces, de créer des prototypes sans travail supplémentaire ...

Mais, en tant qu'ingénieur honnête, Dmitry a non seulement décrit les possibilités vertigineuses qui seront disponibles dans la huitième version du langage, mais a également mis en garde contre ses lacunes, mais plutôt, «non-optimalité». Bien sûr, il est formidable qu'avec le préchargement des scripts soient chargés au démarrage de PHP, cependant, ils ne peuvent pas être remplacés sans redémarrage, et certains peuvent ne pas fonctionner avec le préchargement comme prévu. Bien sûr, c'est merveilleux quand, grâce à FFI, vous pouvez opérer sur des structures de données définies en C, et l'API elle-même est simple et agréable, seul FFI ouvre mille nouvelles façons de se tirer une balle dans le pied, et ses performances sans JIT sont relativement faibles.

Dans le même temps, la combinaison de technologies qui sont à la base du G8 présente plus d'avantages que d'inconvénients. De plus, bon nombre des fonctionnalités mentionnées par Dmitry dans le rapport se retrouvent déjà dans la version 7.4.

Alexander Lisachenko: École de magie PHP




La salle complète après le déjeuner a été rassemblée par Alexander Lisachenko, responsable du développement web chez Alpari, membre du comité de programme de PHP Russie 2019, créateur et développeur principal du framework orienté aspect Go! Aop. Il a offert un regard sur la langue à travers un prisme - notre sous-titre ne ment pas! - magique.

Tout comme l'intuition est une logique cachée à la raison, la magie dans un langage de programmation est l'exploitation de capacités anormales ou peu connues de ce langage sur la base d'une connaissance approfondie de sa structure interne, des «distorsions» et des failles.

Alexander a démontré comme divertissement plusieurs astuces que beaucoup de ceux qui étaient assis dans la salle (et il y avait une minorité de juniors parmi eux) ont fait exploser le cerveau. L'orateur s'est progressivement rapproché de la façon d'utiliser les ajustements qu'il a découverts au fil des ans en creusant dans l'intestin de PHP, au profit du codage.

Des méthodes magiques, des moyens non standard d'accès aux propriétés, des contextes changeants, des filtres de flux - tout cela et bien plus encore «le maestro Lysachenko» pris à part d'un point de vue pragmatique. Bien qu'il était impossible de ne pas noter la beauté paradoxale de ce que les haineux de PHP préfèrent appeler des défauts innés. Nous ne savons pas, nous ne savons pas ... Nous l'aimons.

Alexander a accordé une attention particulière à la programmation orientée aspect en PHP, qui, en pleine conformité avec le principe de la pratique, ce que vous prêchez utilise dans la queue et dans la crinière, et qui a tout de même jeté les bases de son Go! Aop.

Dave Leading: Analyse statique avancée pratique




Dave Liddament, directeur de Lamp Bristol, a partagé avec le public ses meilleures pratiques concernant l'analyse statique avancée du code PHP. En tant qu'auteur de l'outil open source SARB, ou Static Analysis Results Baseliner, il a déployé une sorte de feuille de route pour que le public mette en œuvre une analyse statique, afin que chacun puisse emprunter à son avis des solutions et des techniques de son propre esprit, pour sa propre pile et ses besoins. Ou pour utiliser le rapport comme un mini-guide holistique pour la mise en œuvre de l'analyse statique.

Soulignant l'importance de l'environnement de développement dans le cadre de l'arsenal pour l'analyse statique, notre invité a sincèrement félicité PHPStorm, qui a semblé surprendre agréablement le modérateur de la section, Roman Pronsky de JetBrains, qui supervise cet IDE dans son entreprise.

Dave a commencé avec le besoin de contrôles de base:

  • Linting.
  • Vérifie la conformité aux normes de programmation (y compris pour évaluer la cohérence du code écrit à l'intérieur de la commande), par exemple à l'aide de PHP CS Fixer .
  • Analyse des codes de sécurité. En tant qu'outil de ce type, le conférencier a recommandé Security Checker de SensioLabs, les auteurs de Symfony.
  • Recherche var_dump oublié.
  • Vérification de la synchronisation automatique composer.json et composer.lock (composer validate)

Ceux-ci et beaucoup d'autres outils d'analyse de code statique peuvent être trouvés par n'importe qui dans un magnifique référentiel GitHub .

Pour les adhérents de symfony, le rapport était doublement utile: pour ceux qui utilisent le framework dans leur travail, il a donné tout un tas de trucs et astuces pour implémenter l'analyse de code statique.

De plus, Dave a exploré les nuances de l'utilisation d'outils plus avancés, principalement Psalm, Phan et PHPStan. Il a mis un accent particulier sur le travail dans les conditions de l'intégration continue (et il a également conseillé certains auditeurs sur les outils ).

La classification des bogues et des «presque bogues» de Dave était également informative, à la lumière de l'analyse statique du code et des détails sur la façon dont ils ont frappé le développement. Par exemple, même si le type de paramètre n'est pas spécifié correctement et ne provoque pas d'erreur dans votre flux de travail, cependant, à mesure que le projet devient plus complexe, il peut facilement se transformer en un rake sur lequel un autre membre de l'équipe va marcher. Selon les statistiques présentées dans la présentation, de tels défauts d'évolutivité (défauts révélés lors de l'évolution du code) représentent environ 80% des bugs qui ressortent lors de la révision du code.

Et aussi ...




Il est difficile de décrire le programme de la conférence dans son intégralité: tout le contenu de la conférence était utile, mais une liste scrupuleuse des 22 rapports, même avec le résumé le plus court possible de leurs thèses, transformerait le rapport en une feuille illisible, alors mentionnons-en quelques autres.

Tenant une promesse, Kirill Smelov de JetBrains a plongé dans les détails du périphérique interne PHPStorm, y compris comment PHP a été impliqué dans la création de l'IDE.

Le discours d'Anton Titov de SpiralScout LLC s'est avéré être un cas rare dans le cadre du programme de la conférence lorsqu'une déviation thématique par rapport au cours "strictement en PHP" a été faite, cependant, son histoire sur le développement d'applications hybrides PHP / Go utilisant RoadRunner a été définitivement réussie.

Tomáš Votruba, un délégué tchèque, a appelé une salle comble, vous expliquant en détail comment rendre la refactorisation de grands tableaux de code hérité moins pénible et accélérer le processus en utilisant plusieurs fois l'auteur de la décision - Rector.

Dmitry Eliseev (ElisDN) a lu le rapport «POO compétent: organisation d'une logique commerciale fiable», dans lequel il a examiné, entre autres, comment séparer l'interface utilisateur et la logique métier de l'esprit.

Unconference et mitaps


Vers la fin du programme principal, au lieu de l'un des éléments constitutifs, le format Unconference a été testé - un analogue du "microphone ouvert": tout le monde pouvait sortir et faire un mini-reportage sur un sujet qui lui semblait intéressant. Le pilote d'un tel «stand-up informatique» a été un succès: Alexander Makarov a parlé de ce que Yii3 est susceptible d'être, un invité de Badoo a partagé une histoire, comment lui et ses collègues ont fait un proxy pour Xdebug, et, enfin, une autre présentation spontanée a été consacrée aux caractéristiques du travail avec des imprimantes d'étiquettes spécialisées et un chèque et visser tout cela à PHP.



Dans une quatrième salle séparée, après le déjeuner, un ensemble de mitaps appliqués a commencé (et ils ont également trouvé leur public):

  • "Laravel vs Symfony: une comparaison incomparable."
  • "Comment contribuer à Symfony et pourquoi le faire."
  • "Comment utiliser Yii2 dans Enterprise? Obtenez les meilleures pratiques de Symfony! ”

À leur tour, les partenaires de la conférence n'ont pas organisé un «cimetière de supports», mais un mouvement discret, divertissant et approprié. ManyChat avait des quiz PHP en ligne, un concours pour créer et démêler des bots, et un mot croisé d'expression régulière sympa. Dans le coin, Badoo coupe Tech Alias ​​- une version informatique des ordinateurs de bureau Alias. Eh bien, sur le stand de Paxful, les visiteurs attendaient des «éléphants violets atypiques», des autocollants et des bonbons d'Estonie.





"Sécuriser" le passé


Afterparty est devenu un agréable cas de coopération au sein de la communauté à tous égards: les organisateurs l'ont organisé avec les initiateurs de la réunion Beer PHP. A la fin du programme principal, ceux qui voulaient, et parmi eux un bon nombre d'orateurs, sont passés à octobre rouge afin de poursuivre les débats dans «l'atmosphère artisanale».



Que pensons-nous des «éléphants 2020»


Si très concis, alors PHP Russie 2020 - à être. En plus des formats de base qui ont prouvé leur pertinence, il y en aura certainement un nouveau pour la prochaine conférence. Le journal des modifications de la liste de souhaits et du comité d'organisation est toujours en cours de remplissage, mais quelque chose est déjà clair à coup sûr.

  • Sans aucun doute, nous continuerons à faire de la conférence: les gens sont satisfaits du format et en demandent plus.
  • Nous allons essayer de commander un morceau d'éléphants. À PHP Russie 2019, ils ne l'étaient pas: il s'est avéré que les droits sur eux appartiennent aux gars de France, et ils sont très lents - ils doivent être commandés pendant 4-6 mois.
  • Nous amènerons presque certainement le même Marco Pivetta, qui était dans notre programme, mais qui est tombé au dernier moment pour des raisons indépendantes de sa volonté. Nous avons également des vues du père de Symfony Fabien Potencier. En fin de compte, nous essaierons d'amener Rasmus Lerdorf aussi: nous l'avons appelé à la première conférence, mais il avait des intersections avec d'autres événements.

Dans l'ensemble, restez à l'écoute!



PS Enfin - un petit bonus. Comme certains d'entre vous le savent, Konstantin Burkalev , un habitant de Habrovsk et membre du comité de programme de PHP Russie, héberge également des podcasts informatiques. Et la prochaine, 104e édition de son SDCast est une interview qu'il a prise de deux conférenciers très méritants, Anton Shabovty et Anton Morev. Il a parlé avec le premier de PHP asynchrone, du multitâche et des processus PHP à longue durée de vie, avec le second - de l'API Rest et de GraphQL, des avantages et des inconvénients des approches, des domaines et des tâches d'application. Bonne écoute!

Source: https://habr.com/ru/post/fr454028/


All Articles