Les mots-clés sont essentiellement un ensemble de mots spéciaux réservés dans chaque langage de programmation dans un but spécifique. Il peut s'agir de commandes ou de paramètres et ils ne peuvent pas être utilisés pour un usage courant comme les noms de variables. Les protégés en PHP sont prédéfinis dans tous les langages dont PHP et également appelés noms réservés.
PUBLICITÉ Cours populaire dans cette catégorie DEVELOPPEUR PHP - Spécialisation | Série de 8 cours | 3 tests simulésCommencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Il existe 5 types de modificateurs d'accès en PHP :
Nous nous concentrerons uniquement sur les modificateurs d'accès protégés dans cet article. Outre les variables, les mots-clés protégés sont également utilisés pour déclarer les méthodes/fonctions et propriétés comme protégées. Sauf indication explicite, toutes les variables et méthodes seront publiques par défaut. La variable protégée diminue la visibilité de la variable ou de la méthode respective car son accès est restreint à la classe dans laquelle elle est déclarée. Les modificateurs d'accès protégés ne peuvent pas être appliqués aux classes.
Cependant, ils peuvent être appelés par une sous-classe héritée de sa classe parent. On peut donc déclarer la méthode souhaitée ou une variable comme protégée en la préfixant d'un mot-clé « protected ».
<?php //declaration of protected variable protected $<variable_name> = value; //declaration of protected property protected $proc = 'protected property'; //declaration of protected function protected function function_name(){ //PHP code goes here } ?>
Ici, nous pouvons voir qu'en utilisant le mot-clé protected, nous déclarons à la fois les noms de variables et de fonctions.
Fonctionnement des modificateurs protégés en PHP : comme le modificateur d'accès privé, nous pouvons également utiliser protégé pour restreindre l'utilisation et l'accès aux fonctions et variables de classe en dehors de la classe. Mais une exception aux variables protégées contre les variables privées est qu'elles sont accessibles via l'héritage de sa classe parent dans une sous-classe.
Comprenons en détail l'utilisation et le fonctionnement du modificateur protégé en prenant un exemple simple ci-dessous :
Code :
<?php // Declaration of Main class class Math { protected $a = 30; protected $b = 10; // Declaration of division function function division() { echo $div=$this->a/$this->b; echo "\n"; } protected function multiply() { echo $mul=$this->a*$this->b; echo "\n"; } } // Declaration of child class addn inherited from above class class addn extends Math { // Declaration of addition function function addition() { echo $division=$this->a+$this->b; } } $obj= new addn; $obj->division(); $obj->addition(); $obj->multiply(); ?>
Sortie :
Après avoir commenté la ligne 29 qui tente d'appeler la méthode protégée
Dans l'exemple ci-dessus, nous présentons les différentes opérations mathématiques comme l'addition, la division et la multiplication. Tout d’abord, nous déclarons la fonction division() sans aucun modificateur d’accès. Par conséquent, par défaut, il est public et la valeur de division que nous effectuons sur les deux variables a et b est affichée dans la sortie lorsque nous appelons la fonction en créant son objet. Mais lorsque nous essayons d'appeler la fonction protégée multiplier(), nous obtenons l'erreur en ligne 34 indiquant que la méthode protégée ne peut pas être appelée.
Alors que nous pouvons appeler et obtenir la valeur d'une méthode protégée via l'héritage comme indiqué. Ici, la classe enfant est héritée de la classe parent Math et nous pouvons donc appeler les variables protégées a et b sans aucune erreur.
Code :
<?php class Animal { // Declaration of protected variable $animal protected $animal = array("Dog", "Cat", "Cow"); // Declaration of protected function for Animal description protected function getDescription($animal) { if($animal == "Dog") { echo "Dogs are the most loyal animals"; } else if($animal == "Cat") { echo "Cats are very smart"; } else if($animal == "Cow") { echo "Cows are worshipped in India"; } } } // Declaration of sub class of above Animal class class Dog extends Animal { protected $animal = "Dog"; // Declaration of public function to print dog's description public function getDogDescription() { // Here we call the protected getDescription() method of parent class Animal $this->getDescription($this->animal); } } // Creating an object of class Animal $animal = new Animal(); // Creating an object of subclass Dog $dog = new Dog(); /* Trying to access protected variables and methods */ echo $animal->animal; // Cannot be accessed $animal->getDescription("Dog"); // Cannot be accessed echo $dog->animal; // Cannot be accessed /* We can call getDogDescription method, in which we are calling a protected method of Animal class */ $dog->getDogDescription(); ?>
Sortie :
Après avoir commenté la ligne 34
Après avoir commenté les lignes 35 et 36
Dans cet exemple, nous déclarons d'abord la classe parent principale Animal et initialisons une variable protégée comme $animal qui est un tableau contenant les noms de 3 animaux différents. Ensuite, nous déclarons également une fonction protégée dans laquelle nous donnons une description unique à chacun des animaux du tableau.
Étant donné que les variables protégées sont accessibles à l'aide de la sous-classe, nous créons ici une autre sous-classe Dog à partir de la classe parent Animal. Également pour montrer que les fonctions publiques sont accessibles n'importe où, nous déclarons une fonction publique pour afficher la description de la variable chien.
Ensuite, nous créons un objet des deux classes Animal et Dog et essayons d'accéder à leurs variables qui sont protégées. Ainsi pour les lignes 40, 41 et 42, nous obtenons une erreur fatale indiquant que les propriétés/méthodes/variables protégées ne sont pas accessibles. Par conséquent, nous ne pouvons accéder à aucune variable en dehors de la classe Animal puisque toutes sont protégées.
Par conséquent, les variables protégées sont les modificateurs d'accès qui sont utilisés pour contrôler des variables, des méthodes ou des propriétés spécifiquement définies dans une classe. Il doit être explicitement spécifié par préfixe et n'est donc accessible que dans son package déclaré et par une sous-classe qui hérite du package parent.
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!