Maison >développement back-end >tutoriel php >php : Contrôle d'accès pour les membres d'une classe
Le contrôle d'accès des attributs ou des méthodes est réalisé en ajoutant les mots-clés public, protected ou private devant.
Les membres de classe définis par public sont accessibles de n'importe où.
Les membres de classe définis par protected sont accessibles par les sous-classes et les classes parentes de la classe dans laquelle ils se trouvent (bien sûr, le la classe dans laquelle se trouve le membre est également accessible) ; les membres de la classe définis par private ne sont accessibles que par la classe dans laquelle ils se trouvent.
prend en charge les 3 modificateurs d'accès suivants en PHP5.
(1) public. Ce modificateur est la valeur par défaut, si aucun modificateur d'accès n'est spécifié pour la propriété ou la méthode, elle sera
publique. Les propriétés ou méthodes publiques sont accessibles à la fois à l’intérieur et à l’extérieur de la classe.
(2) privé. Ce modificateur indique que la propriété ou la méthode marquée n'est accessible qu'au sein de la classe. Ne peut pas être hérité par !
(3) protégé. Ce modificateur indique que la propriété ou la méthode marquée n'est accessible qu'au sein de la classe. Peut être hérité
privé, la même classe est accessible, mais les sous-classes et les classes externes ne peuvent pas y accéder ;
protégé, la même classe et les mêmes sous-classes sont accessibles, mais les classes externes ne le peuvent pas.
Contrôle d'accès pour les membres de la classe
Les membres de la classe doivent être définis à l'aide des mots-clés public, protected ou private
<?php class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; function printHello() { echo $this->public; echo $this->protected; echo $this->private; } } $obj = new MyClass(); echo $obj->public; // 这行能被正常执行 echo $obj->protected; // 这行会产生一个致命错误 echo $obj->private; // 这行也会产生一个致命错误 $obj->printHello(); // 输出 Public、Protected 和 Private class MyClass2 extends MyClass { // 可以对 public 和 protected 进行重定义,但 private 而不能 protected $protected = 'Protected2'; function printHello() { echo $this->public; echo $this->protected; echo $this->private; } } $obj2 = new MyClass2(); echo $obj->public; // 这行能被正常执行 echo $obj2->private; // 未定义 private echo $obj2->protected; // 这行会产生一个致命错误 $obj2->printHello(); // 输出 Public、Protected2,但不会输出 Private class Bar { public function test() { $this->testPrivate(); $this->testPublic(); } public function testPublic() { echo "Bar::testPublic\n"; } private function testPrivate() { echo "Bar::testPrivate\n"; } } class Foo extends Bar { public function testPublic() { echo "Foo::testPublic\n"; } private function testPrivate() { echo "Foo::testPrivate\n"; } } $myFoo = new foo(); $myFoo->test(); // Bar::testPrivate // Foo::testPublic ?>
Contrôle d'accès pour les méthodes Accès Les méthodes de contrôle
de la classedoivent être définies à l'aide des mots-clés public, protected ou private. Si ces mots-clés ne sont pas définis, la méthode sera définie sur le public par défaut.
<?php class MyClass { // 构造函数必须是 public public function construct() { } // 声明一个 public 的方法 public function MyPublic() { } // 声明一个 protected 的方法 protected function MyProtected() { } // 声明一个 private 的方法 private function MyPrivate() { } // 这个方法也是 public 的 function Foo() { $this->MyPublic(); $this->MyProtected(); $this->MyPrivate(); } } $myclass = new MyClass; $myclass->MyPublic(); // 这行能被正常执行 $myclass->MyProtected(); // 这行会产生一个致命错误 $myclass->MyPrivate(); // 这行会产生一个致命错误 $myclass->Foo(); // Public、Protected 和 Private 都被调用了 class MyClass2 extends MyClass { // This is public function Foo2() { $this->MyPublic(); $this->MyProtected(); $this->MyPrivate(); // 这行会产生一个致命错误 } } $myclass2 = new MyClass2; $myclass2->MyPublic(); // 这行能被正常执行 $myclass2->Foo2(); // Public 和 Protected 都被调用了,但 Private 不会被调用 ?>
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!