溫振宏
【摘要】 PHP的面向?qū)ο笾?,針?duì)類的成員屬性和成員方法有三種訪問控制修飾符,分別為public,protected 和private。三種訪問控制修飾符支持的訪問范圍是不同的。本文詳細(xì)的介紹了public,protected及private修飾類中成員時(shí)是如何訪問的。
【關(guān)鍵詞】 面向?qū)ο?修飾符 public protected private
PHP是一種簡單的,面向?qū)ο蟮?,免費(fèi)開源的Web開發(fā)語言。PHP語音具有開發(fā)周期短,安全穩(wěn)定,簡單易學(xué),良好的跨平臺(tái)等特性。因此,PHP入選全球五大最受歡迎的編程語言。
封裝,繼承和多態(tài)是面向?qū)ο笳Z言的三大特性。PHP的封裝特性支持三種訪問控制修飾符:public公共的,protected受保護(hù)的及private私有的。三種修飾符均是用來修飾PHP類中成員屬性和成員方法的。
三種訪問控制修飾符的訪問權(quán)限對(duì)照表如下:
一、修飾符public
修飾符public修飾類中成員,訪問沒有任何限制。即類內(nèi)部的成員可以訪問;類外部的成員可以訪問;子類也可以訪問。如果成員沒有指定訪問控制修飾符,將被視為public。
class A{
public $pro1 = “public修飾的成員屬性”;
function printInfo(){echo $this->pro1;echo “視為public修飾的成員方法”;}}
$a1 = new A();echo $a1->$pro1; $a1->printInfo();
語句echo $a1->$pro1是通過類A的對(duì)象$a1訪問類中屬性public修飾的屬性$pro1。語句$a1->printinfo()是通過類A的對(duì)象$a1訪問類中方法printInfo()。語句echo $this->pro1是在類A的內(nèi)部訪問public修飾的屬性$pro1。
class B extends A{function getA(){echo parent::$pro1; parent::printInfo();}}
$b1 = new B();$b1->getA();
聲明子類B繼承類A,子類B中g(shù)etA()方法訪問父類A中的public修飾的$pro1成員屬性及printInfo()成員方法。
二、 修飾符protected
修飾類protected修飾類中成員,不能被該類的外部成員訪問。但該類內(nèi)部可以訪問;該類的子類也可以訪問。
class A{
protected $pro2=”protected修飾的成員屬性”;
$b2->getPro2();方法setPro2()在類A的內(nèi)部為protected修飾的屬性$pro2賦值。方法getPro2()是在子類B中訪問父類A中的protected修飾的屬性$pro2。
三、修飾符private
修飾符private修飾類中成員,不允許該類的外部成員訪問,也不允許該類的子類訪問。只能允許該類內(nèi)部的成員訪問。
方法getPro3()在類A的內(nèi)部訪問private修飾的屬性$pro3。
綜上所述,PHP中三種訪問控制修飾符public,protected及private的訪問控制權(quán)限由高到低。修飾符private修飾的成員屬性或成員方法訪問權(quán)限是最低的。實(shí)際操作中,我們也是將類中的成員屬性全部用private修飾符進(jìn)行修飾,然后通過construct()方法對(duì)成員屬性賦值,僅提供公共接口與外部聯(lián)系。
參 考 文 獻(xiàn)
[1] 高洛峰,LAMP兄弟連主編, 《細(xì)說PHP2》, 電子工業(yè)出版社第1版2013.6,.
[2] 孔祥盛主編《PHP編程基礎(chǔ)與實(shí)例教程》, 人民郵電出版社第1版2011.8.