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