PHP 8.2, sorti en décembre 2022, renforce le typage, élimine des comportements hérités problématiques et modernise des API vieillissantes. Les principales nouveautés incluent la généralisation des classes readonly, permettant de déclarer une classe entière en lecture seule, simplifiant ainsi la création d'objets immuables. Le système de types est également enrichi avec les types DNF, combinant unions et intersections, et l'introduction de true, false et null comme types autonomes pour une meilleure précision dans la documentation des fonctions. Ces évolutions visent à rendre le code plus moderne et performant.
L'article explique l'utilisation du type "never" introduit en PHP 8.1, qui indique qu'une fonction ne retournera jamais de valeur, soit en lançant une exception, soit en appelant exit ou die. Ce type ne peut être utilisé que comme type de retour et ne peut pas être combiné avec des types d'intersection ou d'union. L'auteur illustre son propos avec des exemples pratiques et met en garde contre les erreurs fatales si une fonction marquée "never" retourne implicitement ou explicitement une valeur.
Cet article concerne l’importance des modèles de domaine typés en PHP, renforcés par des outils comme PHPStan et Psalm. L’auteur explique que la sécurité des types permet de préserver l’intégrité architecturale en rendant impossibles les états invalides (ex. : un montant négatif pour une classe Money). Les outils d’analyse statique détectent les violations de contrats, les fuites de nullabilité ou les dépendances architecturales non désirées, là où les tests unitaires peuvent échouer. L’article souligne que modéliser chaque concept métier (comme EmailAddress ou UserId) en tant que type dédié, et utiliser des règles personnalisées dans PHPStan/Psalm, transforme le code en un système fiable et auto-documenté. L’objectif : aligner l’intention des développeurs avec le comportement réel du code, réduisant ainsi la dette technique et les erreurs silencieuses. Une approche progressive est recommandée pour intégrer ces pratiques dans les projets existants.
En TypeScript, interface et type servent tous deux à définir des formes de données, mais avec des cas d’usage distincts. Les interfaces brillent pour déclarer des objets et des APIs extensibles (grâce à la fusion de déclarations et à l’héritage), ce qui les rend parfaites pour les contrats publics ou les bibliothèques. À l’inverse, les types (via type) sont plus polyvalents : ils gèrent les unions, les tuples, les types mappés et les structures complexes, mais ne peuvent pas être réouverts. Privilégiez les interfaces pour modéliser des objets et favoriser l’extensibilité (ex : classes, APIs), et optez pour les types pour des besoins avancés comme les unions, les utilitaires ou les alias de types complexes. En pratique, utilisez les interfaces par défaut pour les formes d’objets, et les types pour tout le reste, surtout quand la flexibilité syntaxique est requise.
L'article explique comment migrer des colonnes de type array vers json avec Doctrine, suite à la dépréciation des types array et object dans la version 3 de Doctrine. Il propose une méthode en plusieurs étapes : créer un type Doctrine hybride pour gérer les deux formats, migrer les données sans interrompre le déploiement, et finalement supprimer le type hybride une fois la migration terminée. Le processus permet de migrer les données de manière efficace et sans temps d'arrêt.
Tout est dans le titre
Tout est dans le titre
SQLite est très permissif par défaut (une colonne de type "entier" peut très bien contenir du texte par exemple) Avec le mot clef "strict" lors de la définition du schéma de la table, SQLite vérifie le type des données comme le font les autres SGBD
Tout est dans le titre
L'auteur expose des techniques facilitant la configuration des types :
- récupération des clefs d'un objet
- filtrage des clefs d'un objet
- manipulation des class
- manipulation des strings
- extraction d'un type à partir d'un type existant grâce à infer
Tout est dans le titre
Suite de la série sur systemd - l'auteur montre comment définir un service, et explore leurs types (simple, exec, forking, etc.) et cas d'usages
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Un tutoriel avec utilisation du typage générique en PHP
Tout est dans le titre
Tout est dans le titre