摘要:中有三種訪問修飾符,它們可以分別用在類的屬性和方法上類的屬性和方法統(tǒng)稱為類的成員,用來修飾類成員的訪問權(quán)限公共的默認(rèn)受保護(hù)的私有的常用魔術(shù)方法,,,,,,,,,在下面的例子中展示一下用法調(diào)用方法調(diào)用方法可以將所有變量都能
PHP中有三種訪問修飾符,它們可以分別用在類的屬性和方法上(類的屬性和方法統(tǒng)稱為類的成員),用來修飾類成員的訪問權(quán)限
public(公共的、默認(rèn))
protected(受保護(hù)的)
private(私有的)
php 常用魔術(shù)方法:
__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 . " "); } }
調(diào)用Test方法
$t = new Test();
$t(123); // 調(diào)用invoke
$t->get3();
// public 方法可以將所有變量都能被調(diào)用到
// public get a :a
// public get b :b
// public get c :c
// __set 和 __get 魔術(shù)方法使用,如果不定義,那么對于 private 屬性 $a 將無法被操作
//$t->a = "123";
//echo $t->a;
//$t->get1(); // private 方法外部不可被調(diào)用
//$t->get2(); // protected 方法外部不可被調(diào)用
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() // 繼承時修改了 訪問權(quán)限 { // 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方法外部無法被調(diào)用,但修改為public后可以被使用
//$t2->get1(); // private方法外部無法被調(diào)用
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28467.html
摘要:面向?qū)ο竺嫦驅(qū)ο蠡A(chǔ)面向?qū)ο笫裁词穷惥哂邢嗤瑢傩蕴卣骱头椒ㄐ袨榈囊幌盗袀€體的集合,類是一個抽象的概念。析構(gòu)函數(shù),當(dāng)一個對象被銷毀前,自動調(diào)用。作用是為新克隆的對象進(jìn)行初始化賦值對象序列化時,自動調(diào)用。使用抽象類的作用限制實例化。 面向?qū)ο?面向?qū)ο蠡A(chǔ) 面向?qū)ο?什么是類? 具有相同屬性(特征)和方法(行為)的一系列個體的集合,類是一個抽象的概念。 什么是對象? 從類中,拿到的具有具體...
摘要:特殊在,方法被對象調(diào)用執(zhí)行時,會自動確定是那個對象調(diào)用的該方法,會使用該對象為方法內(nèi)的賦值構(gòu)造析構(gòu)類,沒有作用域,作用域,只是講,函數(shù)內(nèi)和函數(shù)外。析構(gòu)在對象消失對象被銷毀時,也會自動執(zhí)行一個方法,稱之為析構(gòu)方法。 相關(guān)定義 對象(object):現(xiàn)實生活中的實體,在編程語言中的體現(xiàn)。實體都有屬性和功能。一組數(shù)據(jù),和操作管理這些數(shù)據(jù)的操作,定義在一起就形成了一個實體,稱之為對象。(屬性和...
摘要:面試專欄正式起更,每周一三五更新,提供最好最優(yōu)質(zhì)的面試內(nèi)容。繼上一篇面試常考內(nèi)容之面向?qū)ο蟀l(fā)表后,今天更新面向?qū)ο蟮淖詈笠黄C嫦驅(qū)ο蟮闹饕卣鳛榉庋b繼承多態(tài)。為了提高內(nèi)聚性減少引起變化,單一原則是低耦合高內(nèi)聚的面向原則上的引申。 PHP面試專欄正式起更,每周一、三、五更新,提供最好最優(yōu)質(zhì)的PHP面試內(nèi)容。繼上一篇PHP面試??純?nèi)容之面向?qū)ο螅?)發(fā)表后,今天更新面向?qū)ο蟮淖詈笠黄?...
摘要:方法如無的調(diào)用,則默認(rèn)為為靜態(tài)方法。聲明靜態(tài)方法會有錯誤提示,但很方便,能用盡量用效率高。 一、面向?qū)ο蟮年P(guān)鍵字 1.instanceof操作符: 對象是否屬于類(檢測繼承性),如下: class Person {}; class Student extends Person {}; $p=new Person; $s=new Student; ...
摘要:一封裝的特性對象的屬性或方法加上修飾符盡可能隱藏內(nèi)部細(xì)節(jié)訪問控制特性修飾符種類二修飾符私有性封裝,外部不能調(diào)用,內(nèi)部其他成員可以,用于為其他方法鋪路的方法,不露出接口。 一、封裝的特性 1.對象的屬性或方法加上修飾符 2.盡可能隱藏內(nèi)部細(xì)節(jié) 3.訪問控制 4.PHP5特性 5.修飾符種類:public/private/protected/var 二、修飾符 1.private: ...
閱讀 1172·2021-10-15 09:39
閱讀 3077·2021-09-10 10:50
閱讀 3466·2019-08-30 15:53
閱讀 1893·2019-08-30 15:52
閱讀 2580·2019-08-29 15:31
閱讀 1988·2019-08-26 13:43
閱讀 2606·2019-08-26 13:37
閱讀 1451·2019-08-23 18:31