Maison  >  Article  >  développement back-end  >  Protégé en PHP

Protégé en PHP

PHPz
PHPzoriginal
2024-08-29 13:08:261027parcourir

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és

Commencez 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 :

  • Public
  • Privé
  • Protégé
  • Résumé
  • Finale

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 ».

Syntaxe

<?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.

Exemples de variables et de méthodes protégées

Comprenons en détail l'utilisation et le fonctionnement du modificateur protégé en prenant un exemple simple ci-dessous :

Exemple n°1

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 :

Protégé en PHP

Après avoir commenté la ligne 29 qui tente d'appeler la méthode protégée

Protégé en PHP

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.

Exemple n°2

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 :

Protégé en PHP

Après avoir commenté la ligne 34

Protégé en PHP

Après avoir commenté les lignes 35 et 36

Protégé en PHP

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.

Importance de protégé en PHP

  • Le modificateur protégé réduit fondamentalement la visibilité de la variable/méthode et est donc plus sécurisé que le modificateur d'accès public auquel on peut accéder n'importe où.
  • Seules les sous-classes peuvent accéder aux méthodes protégées et non par n'importe quelle classe.
  • L'utilité de la classe est rendue très claire lorsque nous la rendons protégée. Ceci est vraiment utile lorsqu'il y a un tas de données et que nous devons mettre une marque précise sur celle-ci.
  • Les variables et membres protégés sont publics dans la classe dans laquelle ils sont déclarés et c'est également la classe enfant qui hérite de cette propriété de la classe parent.
  • Il fournit une sécurité de deuxième niveau, un de moins que le privé qui est le plus sécurisé et à côté des modificateurs publics qui ne sont pas si sécurisés.
  • Cela aide le développeur à décrire les membres partageables et ceux non partageables et aide à les confiner dans les murs de la classe.

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Privé en PHPArticle suivant:Privé en PHP