Rencontre PHPQuébec du 1er mars 2018 à Montréal

Sujet: question et réponse

Présence: une dizaine d'hommes

Langue: majoritairement français, un peu d'anglais

Questions

Quels sont les langages Web les plus utilisés par pays?

Voir https://insights.stackoverflow.com/survey/2017 pour des exemples de réponses.

Quelle est la date de sortie de PHP 7.3

Selon les dates de sorties des versions de la série 7, soit 7.0.0 : 3 décembre 2015, 7.1.0 : 1 décembre 2016, 7.2.0 : 30 novembre 2017, la prochaine version 7.3 devrait sortir en novembre/décembre 2018.

Quels sont les nouveautés dans les derniers PHP 7?

Voir: 7.0 7.1 7.2

7.0

  • Type scalaire des arguments
  • Type de retour des fonctions
  • Opérateur ??
  • Opérateur de comparaison <=>
  • Tableau constant avec define()
  • Classes anonymes
  • Unicode \u{00xx}
  • Closure::call(). Exemple: $function->call($someClass)
  • Expectations, assert devient une instructions
  • Déclaration use groupée
  • Return dans les générateurs et délégation
  • ...

7.1

  • Les déclarations de types peuvent être le type ou null à l'aide du préfixe `?'.
  • Le type de retour peut être void
  • On peut utiliser la nouvelle syntaxe [$a, $b] = [1, 2] au lieu de list($a, $b) = [1, 2]. (Déstructuration?)
  • Visibilité public/protected/private pour les constantes de classe.
  • Pseudo-type iterable qui est un Array ou un Traversable.
  • Types multiples d'exception dans les catch() avec catch (FirstException | SecondException $e)
  • Support de clés pour list() et [] - déstructuration
  • Offset négatif pour les chaînes de caractères et les fonctions sur les chaînes de caractères (comme strpos).
  • Transformation de fonction "callable" en closure.
  • ...

7.2

  • Nouveau type object (retour et argument)
  • Chargement des extensions dans les php.ini et dl() avec leur nom (sans extension)
  • Substitution de méthode abstraite
  • Élargissement du type des arguments
  • Permettre une virgule pour les espaces de noms groupés (use).
  • Modifications aux extensions...

Quelles sont les solutions pour développer en équipe pour un environnement commun?

Les machines virtuelles, vagrant, docker, ...

Est-ce qu'on peut utiliser composer pour des projets locaux

Oui, il est possible de spécifier les dépôts dans le fichiers de configuration

Voir: composer - repositories

Quels types de problèmes avez vous eu avec des environnements Windows

Liens symboliques dans les VMS, retour de lignes et ?> à la fin de fichiers, noms de fichiers avec majuscules/minuscules, chemin d'accès avec barre obliques.

Pourquoi opcache 7.0.27 se mêlent avec des liens symboliques sur des hôtes virtuelles Apache2

Probablement: Ne pas mélanger une fonction autoload avec des liens symboliques... (à vérifier)

Est-ce qu'on devrait avoir des types génériques/templates dans PHP?

En C++, il existe des Templates, Java possède des types génériques, mais qu'est-ce que PHP offre pour des collections d'objets du même type?

Il n'y a pas encore d'implémentation de gabarit/générique dans PHP. Par contre, 7.2 introduit le fait qu'on peut surchargé les méthodes abstraites de classe abstraite. En théorie on pourrait ajout des types plus précis aux arguments/retours des fonctions. Ce n'est pas vraiment comparable, mais on pourrait avoir:

abstract class AList
{
  abstract function add($s);
}

abstract class BList extends AList
{
  abstract function add(AList $s) : AList;
}

abstract class CList extends CList
{
  abstract function add(CList $s) : CList;
}

Classes utiles pour les listes d'objets?

Voir la classe Collections de Laravel.

Différence entre procédurale et orienté objet?

Il y a aussi évènementiel, fonctionnel, ...

Pourcentage de votre code qui est orienté objet?

Selon les expériences des participants...

ORM?

Selon les expériences des participants...

  • Doctrine
  • Eloquent (implémentation d'ActiveRecord de Laravel)

Voir List of object-relational mapping software

Étendu des tests dans vos classes?

Selon les expériences des participants...

Hors-PHP

Quels frameworks JS devrait t'on apprendre du côté client ? Angular, React, Vue.js?

Angular ne semble pas faire partie des frameworks préférés des participants (introduction complexe). React a un bon potentiel et est supporté par une grosse compagnie (Facebook), malgré la controverse du changement de licence. Vue.js est de plus en plus demandé dans le milieu.