Maison >développement back-end >tutoriel php >Analyse des modificateurs de contrôle d'autorisation PHP : analyse approfondie des caractéristiques et des fonctions de divers modificateurs

Analyse des modificateurs de contrôle d'autorisation PHP : analyse approfondie des caractéristiques et des fonctions de divers modificateurs

王林
王林original
2024-01-19 10:43:05979parcourir

Analyse des modificateurs de contrôle dautorisation PHP : analyse approfondie des caractéristiques et des fonctions de divers modificateurs

Dans le développement d'applications Web, le contrôle des autorisations est une fonction très importante, en particulier lorsque l'application implique l'authentification des utilisateurs et la protection des informations sensibles. En PHP, les modificateurs de contrôle d'autorisation sont un outil couramment utilisé pour contrôler les autorisations d'accès aux classes, propriétés et méthodes. Cet article analysera en profondeur les caractéristiques et les fonctions de divers modificateurs de contrôle d'autorisation en PHP et démontrera leur utilisation à travers des exemples de code spécifiques.

  1. modificateur public

public est le modificateur le plus basique de PHP, ce qui signifie que les classes, propriétés et méthodes sont accessibles. En d’autres termes, si une classe, une propriété ou une méthode est déclarée publique, elle est accessible de n’importe où. Par exemple :

class Car {
    public $color; // public属性
    public function drive() { // public方法
        echo "Driving";
    }
}

Le code ci-dessus définit une classe nommée Car, qui contient une propriété publique $color et une méthode publique drive() . Puisque ces membres sont publics, ils peuvent être consultés et appelés par n'importe quel autre code, par exemple : Car的类,其中包含一个public属性$color和一个public方法drive()。由于这些成员都是public的,它们可以被任何其他代码访问和调用,例如:

$myCar = new Car();
$myCar->color = "red"; // 访问public属性
$myCar->drive(); // 调用public方法
  1. protected修饰符

protected是PHP中的另一种权限修饰符,它表示该类和其子类可以访问该属性或方法,而其他代码则不能。例如:

class Car {
    protected $color; // protected属性
    protected function drive() { // protected方法
        echo "Driving";
    }
}

在上面的代码中,$colordrive()都被声明为protected,因此只有Car类及其子类中的代码可以访问和调用它们。例如:

class SportsCar extends Car {
    public function set_color($color) {
        $this->color = $color; // 可以访问protected属性
    }
}

$sportsCar = new SportsCar();
$sportsCar -> set_color("blue"); // 调用public方法

上面代码定义了一个名为SportsCar的子类,并在其中定义了一个public方法,通过该方法可以设置Car类中的protected属性$color。由于SportsCar继承了Car类,所以它可以访问和调用Car类中的protected成员。

  1. private修饰符

private是PHP中最严格的权限修饰符,用于表示只有该类中的代码可以访问该成员。其他类和对象都不能访问或调用它。例如:

class Car {
    private $mileage; // private属性
    private function update_mileage() { // private方法
        $this -> mileage++;
    }
}

在上面的代码中,$mileageupdate_mileage()都被声明为private,只有在Car类中的代码才可以访问和调用它们。例如:

$myCar = new Car();
$myCar->mileage = 1000; // 这里会报错,因为$mileage是私有的
$myCar->update_mileage(); // 这里会报错,因为$update_mileage()是私有的

上面代码演示了无法在类外部访问和修改private属性和调用private方法。

  1. final修饰符

除了以上三种权限修饰符,PHP中还有一种修饰符:final。final可以用于类、属性和方法中,用于表示它们是“终态”,即不能被子类继承或重写。例如:

class Car {
    final public function drive() { // final public方法
        echo "Driving";
    }
}

class SportsCar extends Car {
    public function drive() { // 这里会报错,因为drive()被声明为final
        echo "Driving fast";
    }
}

上面的代码定义一个名为Car的类,其中包含一个final public方法drive()。在SportsCar类中,尝试重写drive()方法,但因为它在Carrrreee

    modificateur protégé

    protected est un autre modificateur d'autorisation en PHP, il indique que la classe et ses sous-classes peuvent accéder à la propriété ou à la méthode, mais pas les autres codes. Par exemple :

    rrreee🎜Dans le code ci-dessus, $color et drive() sont déclarés comme protégés, donc seules la classe Car et son code dans les sous-classes peut y accéder et les appeler. Par exemple : 🎜rrreee🎜Le code ci-dessus définit une sous-classe nommée SportsCar et y définit une méthode publique, grâce à laquelle le protégé dans la classe Car peut être défini comme propriété $couleur. Puisque SportsCar hérite de la classe Car, il peut accéder et appeler les membres protégés de la classe Car. 🎜
      🎜modificateur privé🎜🎜🎜private est le modificateur d'autorisation le plus restrictif en PHP, utilisé pour indiquer que seul le code de la classe peut accéder au membre. Aucune autre classe ou objet ne peut y accéder ou l'appeler. Par exemple : 🎜rrreee🎜Dans le code ci-dessus, $mileage et update_mileage() sont déclarés comme privés, uniquement ceux de la classe Car Seul le code peut y accéder et les appeler. Par exemple : 🎜rrreee🎜Le code ci-dessus démontre que les propriétés privées et les méthodes privées ne sont pas accessibles et modifiables en dehors de la classe. 🎜
        🎜modificateur final🎜🎜🎜En plus des trois modificateurs d'autorisation ci-dessus, il existe un autre modificateur en PHP : final. final peut être utilisé dans les classes, les propriétés et les méthodes pour indiquer qu'elles sont « finales », c'est-à-dire qu'elles ne peuvent pas être héritées ou remplacées par des sous-classes. Par exemple : 🎜rrreee🎜Le code ci-dessus définit une classe nommée Car, qui contient une méthode publique finale drive(). Dans la classe SportsCar, tentative de remplacer la méthode drive(), mais comme elle est déclarée finale dans la classe Car, le code produit une erreur . Cela signifie que la méthode a été définie comme finale et ne peut pas être modifiée par les sous-classes. 🎜🎜Résumé🎜🎜Dans cet article, nous avons analysé en profondeur les caractéristiques et les fonctions de divers modificateurs d'autorisation en PHP. Public autorise l'accès et les appels de n'importe où, protected autorise l'accès et les appels à la classe et à ses sous-classes, et private autorise uniquement l'accès et les appels au sein de la classe. Final signifie que ces membres sont dans un « état final » et ne peuvent pas être modifiés par les sous-classes. Comprendre comment utiliser ces modificateurs d'autorisations est la clé d'un bon contrôle des autorisations et d'une bonne conception du code. 🎜

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