Dans cette série, je couvrirai les principes fondamentaux de la programmation orientée objet (POO) PHP. Le contenu sera organisé en parties séquentielles, chacune se concentrant sur un sujet spécifique. Si vous êtes débutant ou si vous n'êtes pas familier avec les concepts de POO, cette série est conçue pour vous guider étape par étape. Dans cette partie, je discuterai des modificateurs d'accès, de l'encapsulation et de l'héritage en PHP. Commençons ensemble le voyage d’apprentissage de PHP OOP !
Les modificateurs d'accès sont utilisés pour contrôler les niveaux d'accès aux propriétés et méthodes de classe. Autrement dit, il contrôle le niveau d'accès dont vous disposez, etc. PHP propose trois types de modificateurs d'accès :
Pour utiliser ces modificateurs d'accès, vous devez les déclarer à l'aide des mots-clés public, protected ou private avant de définir les propriétés ou méthodes. Il est important de noter que si vous ne spécifiez aucun modificateur d'accès pour une propriété ou une méthode, celle-ci est considérée comme publique par défaut.
class MyClass { public $publicVar; // Accessible from anywhere protected $protectedVar; // Accessible from this class and subclass private $privateVar; // Accessible from only this class public function publicMethod() { // Accessible from anywhere } protected function protectedMethod() { // Accessible from this class and subclass } private function privateMethod() { // Accessible from only this class } }
En utilisant ces modificateurs d'accès, nous pouvons contrôler l'accès aux données et aux fonctionnalités d'une classe, ce qui est étroitement lié à l'encapsulation et à la sécurité au sein d'une classe.
L'encapsulation est le processus de création d'une nouvelle entité pour garantir la confidentialité ou la sécurité des informations. Une classe peut avoir diverses propriétés et méthodes, et nous pouvons utiliser des modificateurs d'accès pour définir comment ces propriétés et méthodes sont accessibles en dehors de la classe. En termes simples, l'encapsulation consiste à contrôler l'accès aux données et aux fonctionnalités de la classe.
L'encapsulation peut se produire à différents niveaux :
Les propriétés sont des données membres d'une classe associées à l'objet de la classe. Par défaut, les propriétés sont publiques, mais nous pouvons les sécuriser à l'aide de modificateurs d'accès privés ou protégés. Cela empêche l’accès direct aux données à partir d’un code externe. Ce concept est connu sous le nom d'encapsulation au niveau de la propriété.
Les méthodes sont les fonctions ou opérations d'une classe qui travaillent sur ses instances. Une méthode peut contenir de nombreuses implémentations qui peuvent être masquées aux classes externes. En faisant cela, nous autorisons le code externe à utiliser la méthode mais pas à accéder à son implémentation interne. C'est ce qu'on appelle l'encapsulation au niveau de la méthode.
À ce niveau, les propriétés et méthodes d'une classe sont stockées en toute sécurité au sein de la classe, et l'accès direct à celles-ci depuis l'extérieur de la classe est restreint. Ils sont cependant accessibles par héritage. C'est ce qu'on appelle l'encapsulation au niveau de la classe.
En dehors de ceux-ci, l'encapsulation peut être implémentée à d'autres niveaux selon les besoins.
L'héritage est un concept de programmation dans lequel une classe (appelée sous-classe ou classe enfant) hérite des propriétés et des méthodes d'une autre classe (appelée superclasse ou classe parent).
Pour simplifier, considérons une classe avec certaines propriétés et méthodes. Si une autre classe nécessite ces mêmes propriétés et méthodes, au lieu de les réécrire, nous pouvons alors les hériter de la classe d'origine dans la nouvelle classe. Ce concept est appelé héritage et son objectif principal est de réutiliser le code et d'éviter la duplication de code. Lorsqu'une classe hérite d'une autre classe :
Regardons un exemple de code
class MyClass { public $publicVar; // Accessible from anywhere protected $protectedVar; // Accessible from this class and subclass private $privateVar; // Accessible from only this class public function publicMethod() { // Accessible from anywhere } protected function protectedMethod() { // Accessible from this class and subclass } private function privateMethod() { // Accessible from only this class } }
Dans l'exemple ci-dessus, nous pouvons voir que la classe Vehicle est héritée à la fois par les classes Car et Bus. Par conséquent, les propriétés et méthodes de la classe Vehicle marquées comme publiques ou protégées sont accessibles au sein de ces sous-classes.
L'héritage multi-niveaux fait référence à un scénario dans lequel une classe hérite d'une autre classe, puis cette classe elle-même est héritée par une troisième classe. Cela permet à la troisième classe d'accéder aux propriétés et méthodes (marquées comme publiques ou protégées) des classes de base et intermédiaires.
class Vehicle { public $name; public $color; public function start() { // start login } public function stop() { // stop login } } class Car extends Vehicle { function __construct(string $name, string $color) { $this->name = $name; $this->color = $color; } public function carInfo() { echo "Car name: $this->name\n"; echo "Car color: $this->color\n"; } } class Bus extends Vehicle { function __construct(string $name, string $color) { $this->name = $name; $this->color = $color; } public function busInfo() { echo "Bus name: $this->name\n"; echo "Bus color: $this->color\n"; } } $toyota = new Car('Toyota', 'Red'); $toyota->start(); $toyota->carInfo(); $toyota->stop(); $tesla = new Bus('Zip', 'Blue'); $tesla->start(); $tesla->busInfo(); $tesla->stop();
Dans cet exemple, la classe Vehicle a été héritée par la classe Car, et enfin, la classe Car a été héritée par la classe ElectricCar. En conséquence, cela démontre l'héritage multi-niveaux en action.
J'espère que cette leçon vous a permis d'acquérir une compréhension fondamentale des sujets abordés. C'est tout pour aujourd'hui ; rendez-vous dans la prochaine leçon ! ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!