php訪問控制的介紹
1. 屬性的訪問控制 php中,類的屬性必須被定義為公有(public),受保護(hù)(protected),私有(private)三個(gè)中的一個(gè)。
PHP4中可以用var關(guān)鍵詞定義屬性,默認(rèn)未公有。被定義為公有的類成員可以在任何地方被訪問。被定義為受保護(hù)的類成員則可以被其自身以及其子類和父類訪問。被定義為私有的類成員則只能被其定義所在的類訪問。
對(duì)var關(guān)鍵詞感興趣的可以看一下http://stackoverflow.com/ques... 2. 方法的訪問控制 同樣,類中的方法也可以被定義為公有(public),受保護(hù)(protected),私有(private)三個(gè)中的一個(gè)。但是如果是公有,方法前的關(guān)鍵詞public可以不寫。即不寫關(guān)鍵次,默認(rèn)為公有。
例如: 那么如果把類中的構(gòu)造函數(shù)私有話了會(huì)發(fā)生什么?例如: 很顯然,我們就不能直接用new Demo()來創(chuàng)建實(shí)例了,因?yàn)閯?chuàng)建實(shí)例的時(shí)候會(huì)在外部調(diào)用__construct()方法。怎么辦?我們或許可以在類里寫一個(gè)靜態(tài)方法來獲取實(shí)例對(duì)象。這樣就即是在本類中調(diào)用__construct()方法,也不用在外部實(shí)例化,簡直完美!
但是話又說回來,我們先把__construct私有化,又千方百計(jì)用靜態(tài)方法獲取到實(shí)例。這是折騰什么鬼? 其實(shí)在在設(shè)計(jì)模式中會(huì)經(jīng)常使用這樣的方法來控制對(duì)象的創(chuàng)建,比如單例模式只允許有一個(gè)全局唯一的對(duì)象。 如果我們需要在全局中只有一個(gè)唯一的對(duì)象,上面的代碼還不夠。因?yàn)橹灰腥苏{(diào)用了兩次getInstance(),那么就生成了兩個(gè)了。
所以我們再把上面的代碼改一下 以上就是關(guān)于php訪問控制的介紹的詳細(xì)內(nèi)容。
聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)
送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)
需注明出處:新網(wǎng)idc知識(shí)百科