Modificateurs d'accès en PHP

Constructeurs et destructeurs en PHP
Héritage en PHP POO

En PHP, les modificateurs d'accès sont une partie importante de la programmation orientée objet (POO). Ils spécifient la portée des variables de classe ou des méthodes et comment elles peuvent être accédées. Dans cet article, nous examinerons les différents types de modificateurs d'accès en PHP et proposerons des exemples d'utilisation.

Accéder aux types de modificateurs en PHP

En PHP, les modificateurs d'accès sont classés comme publics, privés ou protégés.

  • Public : une méthode ou un attribut défini sur public est accessible partout. C'est le modificateur d'accès par défaut en PHP.
  • Privé : une méthode ou un attribut défini sur privé n'est accessible qu'au sein de la classe dans laquelle il est créé.
  • Protected : une méthode ou un attribut défini sur protected est accessible dans la classe dans laquelle il est créé, ainsi que dans les classes qui héritent de cette classe.

Exemples

class Person{
  public $name;
  protected $age;
  private $height;
}

$x= new Person();
$x->name = 'John'; // OK
$x->age= '32'; // ERROR
$x->height= '5.4'; // ERROR

Dans l'exemple ci-dessus, nous définissons une classe "Person" avec trois attributs, chacun avec un modificateur d'accès distinct. L'attribut "name" est public, l'attribut "age" est protégé et l'attribut "height" est privé. Lorsque nous essayons d'accéder à l'attribut "name" en dehors de la classe et d'y ajouter une valeur, tout fonctionne bien. Cependant, tenter d'ajouter des valeurs aux propriétés "age" et "height" en dehors de la classe entraîne une erreur fatale.

Méthodes publiques, privées et protégées

class Person{
  public $name;
  public $age;
  public $height;

  function set_name($n) {  // a public function (default)
    $this->name = $n;
  }
  protected function set_age($a) { // a protected function
    $this->age = $a;
  }
  private function set_height($h) { // a private function
    $this->height = $h;
  }
}

$person = new Person();
$person->set_name('John'); // OK
$person->set_age('26'); // ERROR
$person->set_height('5.4'); // ERROR

Dans l'exemple ci-dessus, nous construisons une classe "Person" avec trois méthodes, chacune avec un modificateur d'accès distinct. La méthode "set name" est publique, la méthode "set age" est protégée et la méthode "set height" est privée. Lorsque nous essayons d'invoquer la fonction "set name" depuis l'extérieur de la classe, cela fonctionne bien. Lorsque nous essayons d'appeler les méthodes "set age" et "set height" depuis l'extérieur de la classe, nous obtenons une erreur fatale.

Modificateurs d'accès avancés : abstrait et final

PHP fournit des modificateurs d'accès sophistiqués nommés "abstract" et "final" en plus des modificateurs d'accès habituels.

  • Un modificateur d'accès abstrait ne peut être utilisé que sur des classes et des méthodes. Il est utilisé pour construire un plan de classe, mais la classe ne peut pas être instanciée. Les méthodes abstraites sont des méthodes que chaque classe qui hérite de la classe abstraite doit implémenter.
  • Les classes, les méthodes et les propriétés peuvent toutes recevoir un modificateur d'accès final. Il est utilisé pour interdire l'extension ou la substitution d'une classe ou d'une méthode.

Exemples

abstract class Bike {

    private $maxSpeed = 80;

    // Simple method
    public function drivingSpeed() {
        return "Driving at " . $this->maxSpeed . " kilometer/hour";
    }

    // Abstract method
    abstract public function drive();
}

class Police extends Bike {

    public function drive() {
        return "Driving out of speed limit.";
    }

}

$bike= new Police();
echo $bike->drivingSpeed();

Dans l'exemple ci-dessus, nous construisons un résumé classe nommée "Bike" qui a une fonction abstraite appelée "drive ()". Nous construisons ensuite une nouvelle classe nommée "Police", qui S'étend la classe "Bike" et implémente la fonction "drive()". Nous utilisons la classe « Police » à la place car nous ne pouvons pas construire un objet de la classe abstraite.

Enfin, les modificateurs d'accès sont une partie importante de la POO en PHP et sont utilisés pour limiter la portée des variables de classe ou des fonctions. Comprendre et utiliser efficacement les modificateurs d'accès peut vous aider à développer un code plus sécurisé et maintenable.

Questions et réponses

Q : Que sont les modificateurs d'accès ?
R : Les modificateurs d'accès définissent la portée des variables ou des méthodes de classe, ainsi que l'endroit où elles sont accessibles. En PHP, les modificateurs d'accès sont classés comme publics, privés ou protégés.

Q : Quel est le modificateur d'accès par défaut ?
R : Le modificateur d'accès par défaut de PHP est public. Si vous ne fournissez pas le modificateur d'accès lors de la création d'une méthode ou d'un attribut dans une classe PHP, il est défini sur public par défaut.

Q : Quelle est la différence entre les modificateurs d'accès privés et protégés ?
R : Une méthode ou un attribut privé ne peut être accessible qu'au sein de la classe qui l'a généré, mais une méthode ou un attribut protégé est accessible au sein de la classe qui l'a créé, ainsi que des classes qui ont hérité de cette classe.

Q : Pouvez-vous donner un exemple d'utilisation d'un modificateur d'accès abstrait en PHP ?

abstract class Bike {
    private $maxSpeed = 80;
    abstract public function drive();
}
class Police extends Bike {
    public function drive() {
        return "Driving out of speed limit.";
    }
}

Dans l'exemple ci-dessus, nous construisons une classe abstraite nommée "Bike" qui a une fonction abstraite appelée "drive ()". Nous construisons ensuite une nouvelle classe nommée "Police", qui étend la classe "Bike" et implémente la fonction "drive()". Nous utilisons la classe « Police » à la place car nous ne pouvons pas construire un objet de la classe abstraite.

Q : Comment fonctionne le modificateur d'accès final ?
R : Le modificateur d'accès final peut être appliqué aux classes, aux méthodes et aux propriétés. Il est utilisé pour empêcher l'extension d'une classe ou la redéfinition d'une méthode. Cela signifie que toute classe qui hérite d'une classe finale ne peut pas être étendue et que toute méthode marquée comme final ne peut pas être remplacée.

Des exercices:

  1. Quel est le modificateur d'accès par défaut en PHP ?
  2. Quelle est la différence entre les modificateurs d'accès privés et protégés en PHP ?
  3. Donnez un exemple d'utilisation d'un modificateur d'accès abstrait en PHP.
  4. Comment fonctionne le modificateur d'accès final ?
  5. Pouvez-vous créer un objet d'une classe abstraite? Pourquoi ou pourquoi pas?
  6. Pouvez-vous remplacer une méthode finale dans une classe enfant? Pourquoi ou pourquoi pas?
  7. Pouvez-vous attribuer une valeur à un attribut privé en dehors de la classe dans laquelle il est créé ? Pourquoi ou pourquoi pas?
  8. Une méthode protégée est-elle accessible en dehors de la classe dans laquelle elle est créée ? Pourquoi ou pourquoi pas?

Réponses:

  1. Le modificateur d'accès par défaut en PHP est public.
  2. Une méthode ou un attribut privé en PHP n'est accessible qu'au sein de la classe dans laquelle il est créé, alors qu'une méthode ou un attribut protégé est accessible au sein de la classe dans laquelle il est créé, ainsi que dans les classes qui héritent de cette classe.
abstract class Bike {
    private $maxSpeed = 80;
    abstract public function drive();
}
class Police extends Bike {
    public function drive() {
        return "Driving out of speed limit.";
    }
}

4. Le modificateur d'accès final peut être appliqué aux classes, méthodes et propriétés. Il est utilisé pour empêcher l'extension d'une classe ou la redéfinition d'une méthode.
5. Non, nous ne pouvons pas créer un objet d'une classe abstraite car une classe abstraite sert de modèle pour d'autres classes et n'a pas de constructeur pour créer un objet.
6. Non, nous ne pouvons pas remplacer une méthode finale dans une classe enfant car elle est marquée comme finale et ne peut pas être remplacée.
7. Non, nous ne pouvons pas fournir de valeur à un attribut privé en dehors de la classe qui l'a généré puisque l'attribut n'est disponible qu'au sein de la classe.
8. Non, une méthode protégée ne peut pas être accessible en dehors de la classe qui l'a créée, mais elle peut être accessible par des classes qui dérivent de cette classe.

Constructeurs et destructeurs en PHP
Héritage en PHP POO
close

Restez à jour sur PHP !

Nous ne spammons pas !

en English
X
Remonter en haut