PHP Manual

Introduction à la programmation orientée objet en PHP

01. 01. 2020

Bienvenue dans le premier article du cours en ligne OOP in PHP. Pour une liste complète des articles, visitez la page d'aperçu.

Notes de contenu:

Le but de cette série est d'expliquer au mieux l'essence** de la programmation orientée objet afin que vous n'ayez pas à passer des centaines d'heures à expérimenter des choses qui n'ont pas de sens. Toutes les techniques et tous les tutoriels sont issus de la pratique et sont expliqués comme j'aurais voulu les lire moi-même lorsque j'apprenais à programmer. Certains concepts sont grandement simplifiés au détriment d'une exactitude factuelle à 100 %, car je crois qu'il est toujours meilleur de comprendre principalement les principes et d'avoir au moins une idée des problèmes que de se perdre dans la programmation et de tout voir comme un grand fouillis.

Comme vous le verrez bientôt, la programmation en POO présente d'énormes avantages pour votre code. Il apportera un nouveau niveau d'abstraction à votre application et vous permettra de résoudre des problèmes très complexes qui ne seraient pas possibles autrement.

Que sont les objets

Dans le concept de base de la programmation, les objets sont des types de données spéciaux qui, en plus de leur propre valeur, peuvent définir un état détaillé, des méthodes, un comportement, et vous permettent d'effectuer diverses opérations, comme dans le monde réel.

En programmation, un objet ressemble à une "chose" du monde réel que l'on peut nommer (par exemple, par un nom) et qui a des propriétés comme une chose du monde réel. Par exemple, un objet peut être un article qui possède certaines valeurs (titre, contenu, auteur, date de publication, ...) et méthodes (insérer un nouveau titre, lire le contenu, calculer le nombre de jours depuis la publication, ...). Dans cet article, nous traiterons principalement de la manière de créer et de travailler avec l'objet à un niveau de base.

Objets et classes

Comme nous l'avons déjà établi, un objet est quelque chose qui existe. Le mot "existe" est très important à ce stade, car comme nous le verrons bientôt, il reste une mise en œuvre pratique à traiter en programmation.

Parce qu'en programmation nous écrivons du code et qu'un objet est quelque chose de "vivant", à partir de ce point, nous distinguerons deux concepts différents dont il est important de comprendre la signification en détail et de faire une distinction stricte :

  • Un objet est quelque chose de "vivant" qui existe en ce moment (a une instance), et peut exécuter quelque chose ou réagir à d'autres objets.
  • Une classe est un code écrit de manière statique qui n'a pas encore été évalué et qui reste le même à tout moment.

Comme nous écrivons toujours du code sous forme de chaîne statique (texte) lorsque nous programmons, nous distinguerons les programmes en classes (définition statique de l'objet entier) et en objets (une instance vivante de la classe).

Exemple de définition d'une classe :

class Article
{
public string $title;
public ?string $autor = null;
}

Notes pratiques:

Dans une application réelle, chaque classe est généralement écrite dans un fichier PHP séparé dont le nom est identique à celui de la classe.

Ainsi, pour la classe Article, par exemple, nous créons src/Article.php. Cette convention n'est pas obligatoire en PHP, mais elle permet de rendre l'application plus lisible afin d'éviter de rassembler beaucoup de code au même endroit.

Chaque classe peut exister au maximum une fois dans toute l'application (avoir un nom unique), mais il peut y avoir (presque) une infinité d'instances (selon la capacité de la RAM). En outre, une classe unique ne peut pas être divisée en plusieurs fichiers et doit être définie en une seule fois et en un seul endroit. Si vous devez créer plusieurs classes avec le même nom, utilisez les espaces de noms.

Nous montrerons également plus tard qu'un code bien structuré permettra de le réutiliser dans de nombreux projets.

Ce code définit une classe Article avec deux propriétés (title et author). Les commentaires sont ignorés par PHP et ne sont utilisés que pour la vérification statique des types (typiquement lus par PhpStorm).

Code :

public string $title;

signifie la définition de properties, qui est une propriété de la classe Article. On peut considérer que Article est une sorte de champ et que title est son index, dans lequel on peut écrire une valeur. Chaque propriété doit avoir une accessibilité définie (public, protégé ou privé), nous expliquerons plus tard ce que chaque paramètre signifie. Si vous ne savez pas quelle accessibilité choisir dans un cas particulier, mettez public.

Instanciation d'une classe et création d'un objet

Le concept de instance est l'un des concepts les plus difficiles à comprendre, il est donc important que vous lisiez très attentivement les lignes qui suivent et je vous recommande d'essayer tous les exemples.

Si notre application a déjà une classe définie dans le code source, elle n'est pas vraiment utilisée nulle part et PHP ne la connaît pas. C'est parce que la POO introduit le principe d'encapsulation des données, ce qui signifie qu'une classe a un contexte interne (local) qui n'est valable qu'à l'intérieur de la classe. En effet, dans le développement sans objet, nous étions habitués à toujours évaluer le code dans son intégralité. Essayez également de considérer une classe comme une forme de fonction ou de programme externe.

Maintenant, nous pouvons créer notre première instance, en utilisant l'opérateur new pour le faire.

$myArticle = new Article;
$myArticle->title = 'Mon premier article'; // écrit la valeur
echo $myArticle->title; // liste "Mon premier article"

Notez que nous mettons l'objet Article entier créé par l'opérateur new dans la variable $myArticle. Cela signifie pour nous que l'objet est en fait un type de données, donc nous pouvons le déplacer à travers les variables et continuer à travailler avec lui.

L'opérateur flèche -> est utilisé pour manipuler l'objet. Si nous disposons d'une instance d'un objet particulier (nous avons une variable avec son contenu), nous pouvons facilement écrire des valeurs dans les propriétés internes, les lire ou les modifier de diverses manières en utilisant des méthodes (nous le verrons plus tard).

L'Instance d'un objet est la création d'une copie locale "vivante" de la classe en mémoire (une variable).

Création de plusieurs instances d'une même classe en même temps

Comme nous l'avons déjà évoqué, chaque objet possède un contexte local qui s'applique dans ses internes. Grâce à ce principe, nous pouvons créer de nombreuses instances indépendantes d'une même classe et les manipuler librement. Nous pouvons même créer un nombre dynamique d'instances et, par exemple, les stocker sous forme d'éléments de tableau. Les possibilités sont infinies.

Attention:

Lorsque vous créez un nombre extrême d'instances (des centaines ou plus), gardez à l'esprit l'empreinte mémoire, car PHP doit conserver les informations sur toutes les instances en RAM. En pratique, cependant, le problème de débordement de la mémoire dû à la présence de nombreuses instances ne se pose pas.

Exemple :

$firstArticle = new Article;
$firstArticle->title = 'Mon premier article';
$secondArticle = new Article;
$secondArticle->title = 'A propos d'un chien et d'un chat';
echo $firstArticle->title; // liste "Mon premier article"
echo $secondArticle->title; // écrit "A propos d'un chien et d'un chat".

Notez que le listing de la propriété title (->title) dépend de l'instance à partir de laquelle nous lisons.

Résumé

Nous avons montré comment définir notre première classe et créer une instance de celle-ci (un objet) dans laquelle nous avons inscrit plusieurs valeurs.

Dans le prochain épisode, nous expliquerons le concept de Constructeur, méthodes et passage d'entrée.

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
Status:
All systems normal.
2024