摘要:中有三種訪問修飾符,它們可以分別用在類的屬性和方法上類的屬性和方法統稱為類的成員,用來修飾類成員的訪問權限公共的默認受保護的私有的常用魔術方法,,,,,,,,,在下面的例子中展示一下用法調用方法調用方法可以將所有變量都能
PHP中有三種訪問修飾符,它們可以分別用在類的屬性和方法上(類的屬性和方法統稱為類的成員),用來修飾類成員的訪問權限
public(公共的、默認)
protected(受保護的)
private(私有的)
php 常用魔術方法:
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __invoke(), __clone()
在下面的例子中展示一下用法
class Test { private $a = "a"; protected $b = "b"; public $c = "c"; public function __set($name, $value) { // TODO: Implement __set() method. } public function __get($name) { // TODO: Implement __get() method. } public function __construct() { echo "begin construct!"; } public function __destruct() { echo "begin destruct!"; } public function __invoke() { echo "try to invoke!"; // TODO: Implement __invoke() method. } public function __isset($name) { // TODO: Implement __isset() method. } private function get1() { var_dump("private get a :" . $this->a . " "); var_dump("private get b :" . $this->b . " "); var_dump("private get c :" . $this->c . " "); } protected function get2() { var_dump("protected get a :" . $this->a . " "); var_dump("protected get b :" . $this->b . " "); var_dump("protected get c :" . $this->c . " "); } public function get3() { var_dump("public get a :" . $this->a . " "); var_dump("public get b :" . $this->b . " "); var_dump("public get c :" . $this->c . " "); } }
調用Test方法
$t = new Test();
$t(123); // 調用invoke
$t->get3();
// public 方法可以將所有變量都能被調用到
// public get a :a
// public get b :b
// public get c :c
// __set 和 __get 魔術方法使用,如果不定義,那么對于 private 屬性 $a 將無法被操作
//$t->a = "123";
//echo $t->a;
//$t->get1(); // private 方法外部不可被調用
//$t->get2(); // protected 方法外部不可被調用
class Test2 extends Test { // private $b = ""; // 報錯,子類繼承修飾符等級不能低于父類 protected $b;// ok 或 public $b private function get1() { var_dump("Test2 private get a :" . $this->a . " "); // 報錯,私有變量不能被繼承 var_dump("Test2 private get b :" . $this->b . " "); var_dump("Test2 private get c :" . $this->c . " "); } public function get2() // 繼承時修改了 訪問權限 { // var_dump("get a :" . $this->a . " ");// 報錯,私有變量不能被繼承 var_dump("Test2 public get b :" . $this->b . " "); var_dump("Test2 public get c :" . $this->c . " "); } public function get3() { // var_dump("get a :" . $this->a . " ");// 報錯,私有變量不能被繼承 var_dump("Test2 public get b :" . $this->b . " "); var_dump("Test2 public get c :" . $this->c . " "); } }
$t2 = new Test2();
$t2->get3();
$t2->get2(); // protected方法外部無法被調用,但修改為public后可以被使用
//$t2->get1(); // private方法外部無法被調用
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28467.html
摘要:面試專欄正式起更,每周一三五更新,提供最好最優質的面試內容。繼上一篇面試常考內容之面向對象發表后,今天更新面向對象的最后一篇。面向對象的主要特征為封裝繼承多態。為了提高內聚性減少引起變化,單一原則是低耦合高內聚的面向原則上的引申。 PHP面試專欄正式起更,每周一、三、五更新,提供最好最優質的PHP面試內容。繼上一篇PHP面試常考內容之面向對象(2)發表后,今天更新面向對象的最后一篇(3...
摘要:方法如無的調用,則默認為為靜態方法。聲明靜態方法會有錯誤提示,但很方便,能用盡量用效率高。 一、面向對象的關鍵字 1.instanceof操作符: 對象是否屬于類(檢測繼承性),如下: class Person {}; class Student extends Person {}; $p=new Person; $s=new Student; ...
摘要:一封裝的特性對象的屬性或方法加上修飾符盡可能隱藏內部細節訪問控制特性修飾符種類二修飾符私有性封裝,外部不能調用,內部其他成員可以,用于為其他方法鋪路的方法,不露出接口。 一、封裝的特性 1.對象的屬性或方法加上修飾符 2.盡可能隱藏內部細節 3.訪問控制 4.PHP5特性 5.修飾符種類:public/private/protected/var 二、修飾符 1.private: ...
閱讀 1160·2021-10-15 09:39
閱讀 3064·2021-09-10 10:50
閱讀 3460·2019-08-30 15:53
閱讀 1886·2019-08-30 15:52
閱讀 2573·2019-08-29 15:31
閱讀 1983·2019-08-26 13:43
閱讀 2602·2019-08-26 13:37
閱讀 1448·2019-08-23 18:31