PHP Orienté Objet nouveautés 8.0 à 8.5

PHP Orienté Objet nouveautés 8.0 à 8.5


L'orienté objet, en PHP et dans d'autres langages, est également nommé POO (programmation orientée objet).

C'est un paradigme de programmation informatique.

La POO consiste en la définition et l'interaction de briques logicielles appelées objets.

Un objet représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne ou encore une page d'un livre. Il possède une structure interne et un comportement, et il sait interagir avec ses pairs.

Il s'agit donc de représenter ces objets et leurs relations. L'interaction entre les objets via leurs relations permet de concevoir et réaliser les fonctionnalités attendues, de mieux résoudre le ou les problèmes. Dès lors, l'étape de modélisation revêt une importance majeure et nécessaire pour la POO. C'est elle qui permet de transcrire les éléments du réel sous forme virtuelle.

Prérequis

Ce cours s'adresse à des personnes qui connaissent déjà :

  • le PHP procédural (variables, fonctions, tableaux, structures de contrôle) ;
  • les requêtes préparées avec PDO.

Nous réutiliserons ces connaissances tout au long du cours, notamment dans les chapitres consacrés au mapping SQL et aux managers.


Les versions de PHP 8

Ce cours couvre les apports orientés objet de toutes les versions de PHP 8 :

Version
Sortie
Nouveautés objet principales
8.0
2020
Promotion de propriétés dans le constructeur, arguments nommés, match, opérateur nullsafe ?->, types union, attributs
8.1
2021
Énumérations (enum), propriétés readonly, syntaxe de callable de première classe f(...), new dans les initialiseurs, constantes final
8.2
2022
Classes readonly, constantes dans les traits, dépréciation des propriétés dynamiques, types DNF
8.3
2023
Constantes de classe typées, attribut #[\Override], clonage profond des propriétés readonly
8.4
2024
Property hooks, visibilité asymétrique, new SansParenthèses()->methode(), objets paresseux (lazy objects)
8.5
2025
Opérateur pipe |>, final sur les propriétés promues, closures dans les expressions constantes

​

Voir sur mon dépôt GitHub :


Annexe — Mémo des nouveautés objet PHP 8.0 à 8.5

Fonctionnalité
Version
Exemple minimal
Promotion de propriétés
8.0
__construct(private string $nom) {}
Arguments nommés
8.0
new Pizza(ananas: true)
Expression match
8.0
match($x) { 1, 2 => 'a', default => 'b' }
Opérateur nullsafe
8.0
$user->adresse?->ville
Types union
8.0
int|float $force
Attributs
8.0
#[Route('/users')]
Type de retour static
8.0
public static function create(): static
Énumérations
8.1
enum Statut: string { case Publie = 'publie'; }
Propriétés readonly
8.1
public readonly string $id;
Callable de 1re classe
8.1
$f = strtoupper(...);
new dans les initialiseurs
8.1
function __construct($log = new NullLogger())
Constantes final
8.1
final const X = 1;
Classes readonly
8.2
readonly class Point { ... }
Constantes dans les traits
8.2
trait T { const X = 1; }
Propriétés dynamiques dépréciées
8.2
#[\AllowDynamicProperties] pour y déroger
Constantes de classe typées
8.3
public const string NOM = 'x';
#[\Override]
8.3
vérifie qu'une méthode redéfinit bien le parent
__clone() et readonly
8.3
réinitialisation autorisée pendant le clonage
Property hooks
8.4
public int $pv { set(int $v) { ... } }
Visibilité asymétrique
8.4
public private(set) int $score;
new sans parenthèses
8.4
new MaClasse()->methode()
Objets paresseux
8.4
initialisation différée (frameworks/ORM)
Opérateur pipe
8.5
$x |> trim(...) |> strtoupper(...)
final sur propriétés promues
8.5
__construct(public final string $nom)
Note moyenne :
5/5 (1 vote)

Commentaires (1)

Michael Pitz

Un langage qui continue à évoluer est un langage vivant!

Connectez-vous pour laisser un commentaire.

Articles similaires

webassembly

webassembly

WebAssembly (Wasm) est un standard du W3C qui fournit un format binaire haute performance pour les applications. Il s'exécute dans un environnement sécurisé, interagit parfaitement avec JavaScript, et peut être déployé aussi bien dans les navigateurs Web que sur des serveurs.

Lire →