這篇文章帶給大家的內容是關於php中對屬性或方法的存取控制的介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
PHP中對屬性或方法的存取控制,是透過在前面加上關鍵字public(公有)、protected(受保護)或 private(私有)來實現的。被定義為public的類別成員可以在任何地方被訪問,被定義為protected的類別成員則可以被自己以及其子類別和父類別存取。被定義為private的類別成員則只能被其定義所在的類別存取。
類別屬性必須定義為public、protected或private。如果用var定義,則視為public。子類別可以修改基底類別public和protected的屬性的值。
<?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(); ?>
類別的必須定義為public、protected或private。若未指定則視為public。子類別可以覆蓋基底類別public和protected的函數。
<?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(); ?>
同一個類別的對象,即使不是同一個實例也可以互相存取對方的私有與受保護成員,因為這些對象的內部具體實現的細節都是已知的。
<?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'); ?>
以上是php中對屬性或方法的存取控制的介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!