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?
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.