Dans le développement de PHP, le contrôle de l'autorisation est l'un des mécanismes de base pour la mise en œuvre de la sécurité du programme et de la conception modulaire. En utilisant raisonnablement les modificateurs d'autorisation, la portée d'accès des membres de la classe peut être efficacement restreinte, les abus de code peuvent être évités et la maintenabilité du programme peut être améliorée.
PHP fournit principalement cinq modificateurs d'autorisation: public , protégé , privé , final et abstrait . Les éléments suivants seront expliqués séparément et seront expliqués en combinaison avec l'exemple de code.
Le public est utilisé pour déclarer les membres du public et peut être accessible librement à l'intérieur, à l'extérieur et dans les sous-classes. Il s'agit de la méthode de contrôle d'accès par défaut et convient aux méthodes ou propriétés qui doivent être largement appelées.
class Person {
public $name;
public function sayHello() {
echo 'Hello, my name is ' . $this->name;
}
}
$person = new Person();
$person->name = 'Tom';
$person->sayHello();
Protégé est utilisé pour définir des membres protégés, qui ne sont accessibles qu'à l'intérieur ou dans des sous-classes héréditaires, et ne sont pas accessibles directement à l'extérieur de la classe.
class Animal {
protected $name;
protected function getName() {
return $this->name;
}
}
class Cat extends Animal {
public function setName($name) {
$this->name = $name;
}
public function sayHello() {
echo 'Hello, I am ' . $this->getName();
}
}
$cat = new Cat();
$cat->setName('Tom');
$cat->sayHello();
Les membres déclarés par privé ne peuvent être utilisés que dans la classe actuelle et ne sont pas accessibles par des sous-classes. Il s'agit de la méthode de contrôle d'accès la plus stricte, souvent utilisée dans les détails de l'implémentation interne de la classe.
class Person {
private $name;
private function getName() {
return $this->name;
}
public function sayHello() {
echo 'Hello, my name is ' . $this->getName();
}
}
$person = new Person();
$person->name = 'Tom'; // Une erreur sera signalée ici
$person->sayHello();
Final est utilisé pour empêcher les classes d'être héritées ou les méthodes écrasées. Les méthodes déclarées par final ne peuvent pas être remplacées dans les sous-classes et conviennent à la logique de base qui ne souhaitent pas être modifiées.
class Animal {
final public function eat() {
echo 'I am eating';
}
}
class Cat extends Animal {
public function eat() { // Une erreur sera signalée ici
echo 'I am not eating';
}
}
$cat = new Cat();
$cat->eat();
Le résumé est utilisé pour définir des classes abstraites et des méthodes abstraites. Les classes abstraites ne peuvent pas être instanciées, elles doivent être héritées par les sous-classes et implémenter toutes les méthodes abstraites.
abstract class Animal {
abstract public function eat();
}
class Cat extends Animal {
public function eat() {
echo 'I am eating fish';
}
}
$cat = new Cat();
$cat->eat();
Comprendre et utiliser rationnellement les modificateurs de contrôle d'accès PHP est la base de l'écriture de code robuste, sécurisé et extensible. Chaque modificateur a son propre objectif spécifique. Lors de la rédaction de classes et de méthodes, les développeurs doivent choisir le niveau d'accès approprié en fonction des besoins réels pour améliorer l'encapsulation et la sécurité du code.