Ce que cet article vous apporte est une introduction au contrôle d'accès aux attributs ou aux méthodes en PHP (exemples de code). Les amis dans le besoin peuvent s'y référer.
Le contrôle d'accès aux propriétés ou méthodes en PHP se fait en ajoutant les mots-clés public (public), protected (protected) ou Privé (privé) à réaliser. Les membres de classe définis comme publics sont accessibles de n'importe où, et les membres de classe définis comme protégés sont accessibles par eux-mêmes, ainsi que par leurs sous-classes et classes parentes. Les membres de classe définis comme privés ne sont accessibles que par la classe dans laquelle ils sont définis.
Les attributs de classe doivent être définis comme publics, protégés ou privés. S'il est défini avec var, il est considéré comme public. Les sous-classes peuvent modifier les valeurs des propriétés publiques et protégées de la classe de base.
<?php class A{ var $a="a"; protected $b="b"; private $c="c"; function printVar(){ echo $this->a.";".$this->b.";".$this->c.";"."\n"; } } class B extends A{ public $a="aa"; protected $b="bb"; private $c="cc"; } $a=new A(); $a->printVar(); $b=new B(); $b->printVar(); ?>
Les cours doivent être définis comme publics, protégés ou privés. S’il n’est pas précisé, il est considéré comme public. Les sous-classes peuvent remplacer les fonctions publiques et protégées de la classe de base.
<?php class A{ public function fa(){ echo "A->fa\n"; } protected function fb(){ echo "A->fb\n"; } private function fc(){ echo "A->fc\n"; } function showFoo(){ $this->fa(); $this->fb(); $this->fc(); } } class B extends A{ function fa(){ echo "B->fa\n"; } protected function fb(){ echo "B->fb\n"; } private function fc(){ echo "B->fc\n"; } } $a=new A(); $a->showFoo(); $b=new B(); $b->showFoo(); ?>
Les objets de la même classe, même s'il ne s'agit pas de la même instance, peuvent accéder aux membres privés et protégés les uns des autres, car les détails d'implémentation internes de ces objets sont connus.
<?php class A { private $a; public function __construct($a) { $this->a = $a; } private function fa() { echo 'private method fa.'; } public function foo(A $other,$v) { $other->a = $v; var_dump($other->a); $other->fa(); } } $a = new A('a'); $aa=new A('aa'); $a->foo($aa,'newA'); ?>
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!