溫振宏
摘要:在PHP程序設(shè)計(jì)語言中,public,protected,private是面向?qū)ο蟮娜N訪問控制修飾符。其中,修飾符private修飾的類中成員屬性或方法的訪問限制最嚴(yán)格,只能在該類的內(nèi)部訪問。本文詳細(xì)地分析了private修飾符及構(gòu)造器constructor的應(yīng)用。
關(guān)鍵詞:PHP private constructor
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)06-0181-01
Abstract:In PHP programming language, public, protected and private are three kinds of access control modifiers of object-oriented programming. The properties of a class modified by private can visit only inner of the class. Modifiers private and constructor are introduced in detail.
Key Words:PHP private constructor
1 Private 和Constructor介紹
PHP是一種HTML內(nèi)嵌式的,用于服務(wù)器端的腳本語言。PHP因開發(fā)周期短,穩(wěn)定安全,簡單易學(xué),免費(fèi)開源,良好的跨平臺(tái)等特性,成為全球最受歡迎的Web開發(fā)語言。PHP是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,面向?qū)ο蟮娜筇匦苑謩e是封裝、繼承和多態(tài)[1]。
封裝,即把客觀事物封裝成類,類中的成員屬性或方法只讓可信的類或?qū)ο蟛僮鳎瑢?duì)不可信的類進(jìn)行信息隱蔽。對(duì)類中的成員屬性或方法能否具有訪問權(quán)限是通過訪問控制修飾符來完成的。PHP的訪問控制修飾符有三種,分別是public,protected和private。修飾符public修飾的類中成員的作用范圍可以是類的內(nèi)部、外部及子類。修飾符protected修飾的類中成員的作用范圍可以是類的內(nèi)部及子類。修飾符private修飾的類中成員的作用范圍只能是類的內(nèi)部。因此,private修飾的類中成員訪問限制最嚴(yán)格[2]。實(shí)際操作中,為了安全起見,我們習(xí)慣上會(huì)將類中的成員屬性全部用private進(jìn)行修飾,對(duì)類外面的成員實(shí)現(xiàn)完全的信息隱蔽。而對(duì)類中private修飾的成員屬性的操作是通過構(gòu)造器來實(shí)現(xiàn)的。構(gòu)造器(也稱構(gòu)造方法),在PHP中構(gòu)造方法主要作用是類的初始化,即為類中的成員屬性賦值。它是在類的實(shí)例化(即創(chuàng)建對(duì)象)時(shí)自動(dòng)調(diào)用的一種特殊的方法。
2 Private和Constructor舉例
聲明Person類,類中包含$name,$sex,$age屬性,全部用修飾符private修飾,做到對(duì)Person類外部成員完全進(jìn)行信息隱蔽。對(duì)$name,$sex,$age屬性的操作通過構(gòu)造方法construct()來實(shí)現(xiàn)。類中還包含輸出信息的printInfo()方法。
class Person{
private $name;
private $sex;
private $age;
function __construct($name,$sex,$age){
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
function printInfo(){
echo $this->name;
echo $this->sex;
echo $this->age;
}
}
在Person類的外面,只需實(shí)例化對(duì)象傳遞具體的參數(shù)就可以為類中private修飾的成員屬性賦值。通過對(duì)象調(diào)用printInfo()方法就可以輸出信息。代碼如下:
$p1 = new Person(“person1”, “男性”, 25);
$p1->printInfo();
3 Constructor在子類中的使用
針對(duì)Person類,聲明子類Student,并讓子類Student繼承Person類。在子類Student中聲明自己的private成員屬性$school,并用構(gòu)造方法進(jìn)行子類的實(shí)例化。
class Student extends Person{
Private $school;
function __construct($name,$sex,$age,$school){
parent::__construct($name,$sex,$age);
$this->school = $school;
}
function printInfo(){
parent::printInfo();
echo $this->school;
}
}
子類Student無法訪問父類Person中的private修飾的屬性$name,$sex,$age。但可以在子類的構(gòu)造方法中用parent::關(guān)鍵字訪問父類Person中的構(gòu)造方法實(shí)現(xiàn)子類成員屬性$name,$sex,$age的初始化。同理,子類Student中的printInfo()方法也是通過parent::關(guān)鍵字實(shí)現(xiàn)訪問父類Person中的printInfo()方法,進(jìn)而輸出子類的全部信息。代碼如下:
$student1 = new Student(“student1”,”男性”,20,”shool1”);
$student1->printInfo();
以上分析表明,private修飾符主要用于類的封裝,讓類中private修飾的成員對(duì)類外部成員完全進(jìn)行信息隱蔽。而對(duì)類中private修飾的成員屬性可以通過構(gòu)造方法進(jìn)行賦值操作。如果子類中的構(gòu)造方法或普通方法對(duì)父類的構(gòu)造方法或普通方法進(jìn)行了重寫,可以通過parent關(guān)鍵字訪問父類的構(gòu)造方法或普通方法。
參考文獻(xiàn)
[1]高洛峰.LAMP兄弟連.細(xì)說PHP2[M].電子工業(yè)出版社,2012.10.
[2]何俊斌,王彩.從零開始學(xué)PHP第2版[M].電子工業(yè)出版社,2014.10.