茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    PHP面向?qū)ο缶偨Y(jié)
    來源:易賢網(wǎng) 閱讀:782 次 日期:2015-01-08 15:57:28
    溫馨提示:易賢網(wǎng)小編為您整理了“PHP面向?qū)ο缶偨Y(jié)”,方便廣大網(wǎng)友查閱!

    1 使用extends實(shí)現(xiàn)繼承以及重載、魔術(shù)方法的含義

    class B extends A

    聲明的時候B里可以沒有A里的方法

    調(diào)用的時候:

    $b=new B();

    $b->A里的方法();

    $b->A里的屬性=1;

    $b->B里的方法();

    $b->B里的方法();

    如果$a=new A();

    可以

    $a->A里的方法();

    $a->A里的屬性=1;

    不可以

    $a->B里的方法();

    $a->B里的方法();

    重載:B繼承A ,B里實(shí)現(xiàn)和A同名的方法屬性。

    PHP中的"重載"與其它絕大多數(shù)面向?qū)ο笳Z言不同。傳統(tǒng)的"重載"是用于提供多個同名的 類方法,但各方法的參數(shù)類型和個數(shù)不同。

    魔術(shù)方法:PHP把所有以__(兩個下劃線)開頭的類方法當(dāng)成魔術(shù)方法。所以你定義自己的類方法時,不要以 __為前綴。

    2 繼承用private和protected訪問修飾符可見性

    屬性方法private不可以被繼承

    屬性方法protected類外部不可見,可以被繼承

    屬性方法public 所定義的類成員可以在任何地方被訪問

    3 php中雙冒號::的應(yīng)用

    php類代碼中??吹?::"的操作符,這個是作用域限定操作符,是用一個雙冒號"::"表示,它用來置頂類中不同作用域的級別。左邊是作用域右邊是訪問作用域的成員。

    在php中定義的作用域有self和parent兩種(在php6中提供了static作用域)。

    范圍解析操作符(也可稱作 Paamayim Nekudotayim)或者更簡單地說是一對冒號,可以用于訪問靜態(tài)成員、方法和常量,還可以用于子類覆蓋父類中的成員和方法。

    代碼如下:

    class MyClass {

    const CONST_VALUE = 'A constant value';

    }

    echo MyClass::CONST_VALUE;

    class OtherClass extends MyClass

    {

    public static $my_static = 'static var';

    public static function doubleColon() {

    echo parent::CONST_VALUE . "n";

    echo self::$my_static . "n";

    }

    }

    OtherClass::doubleColon();

    //子類覆蓋父類

    class MyClass

    {

    protected function myFunc() {

    echo "MyClass::myFunc()n";

    }

    }

    class OtherClass extends MyClass

    {

    // 覆蓋父類中的方法

    public function myFunc()

    {

    // 但仍然可以調(diào)用已被覆蓋的方法

    parent::myFunc();

    echo "OtherClass::myFunc()n";

    }

    }

    $class = new OtherClass();

    $class->myFunc();

    4 php中this和self以及parent的作用

    this:就是指向當(dāng)前對象實(shí)例的指針,不指向任何其他對象或類。

    self:表示當(dāng)前類的作用域,與this不同的是它不表示類的某個特定實(shí)例,在類之外的代碼中不能使用self,而且它不能識別自己在繼承中層次的位置。也就是說,當(dāng)在擴(kuò)展類中使用self時,它調(diào)用的不是父類的方法,而是擴(kuò)展類的重載的方法。self是指向類本身,也就是self是不指向任何已經(jīng)實(shí)例化的對象,一般self使用來指向類中的靜態(tài)變量。

    . 代碼如下:

    private static $firstCount = 0;

    private $lastCount;

    //構(gòu)造函數(shù)

    function __construct()

    {

    $this->lastCount = ++self:$firstCount; //使用self來調(diào)用靜態(tài)變量,使用self調(diào)用必須使用::(域運(yùn)算符號)

    }

    parent:表示當(dāng)前類父類的作用域,其余的跟self特性一樣。parent是指向父類的指針,一般我們使用parent來調(diào)用父類的構(gòu)造函數(shù)。

    代碼如下:

    //繼承類的構(gòu)造函數(shù)

    function __construct( $personSex, $personAge )

    {

    parent::__construct( "test" ); //使用parent調(diào)用了父類的構(gòu)造函數(shù)

    $this->personSex = $personSex;

    $this->personAge = $personAge;

    }

    5 構(gòu)造函數(shù)與析構(gòu)函數(shù)

    具有構(gòu)造函數(shù)的類會在每次創(chuàng)建對象時先調(diào)用此方法,所以非常適合在使用對象之前做一些初始化工作。

    function __construct() {}

    如果子類中定義了構(gòu)造函數(shù)則不會暗中調(diào)用其父類的構(gòu)造函數(shù)。要執(zhí)行父類的構(gòu)造函數(shù),需要在子類的構(gòu)造函數(shù)中調(diào)用 parent::__construct()。

    PHP 5 引入了析構(gòu)函數(shù)的概念,這類似于其它面向?qū)ο蟮恼Z言,如 C++。析構(gòu)函數(shù)會在到某個對象的所有引用都被刪除或者當(dāng)對象被顯式銷毀時執(zhí)行。

    function __destruct() {}

    6 final 關(guān)鍵字

    PHP 5 新增了一個 final 關(guān)鍵字。如果父類中的方法被聲明為final,則子類無法覆蓋該方法; 如果一個類被聲明為final,則不能被繼承。

    7 繼承和構(gòu)造函數(shù)

    父類子類結(jié)果

    有構(gòu)造函數(shù)無構(gòu)造函數(shù)父構(gòu)造

    有構(gòu)造函數(shù)有構(gòu)造函數(shù)子構(gòu)造

    8 接口

    可以通過interface來定義一個接口,就像定義一個標(biāo)準(zhǔn)的類一樣。

    注意:

    1)但其中定義所有的方法都是空的;

    2)接口中定義的所有方法都必須是public,這是接口的特性;

    3)實(shí)現(xiàn)多個接口時,接口中的方法不能有重名;

    4)接口也可以繼承,通過使用extends操作符;

    5)接口中也可以定義常量。接口常量和類常量的使用完全相同。 它們都是定值,不能被子類或子接口修改。

    // 聲明一個'iTemplate'接口

    interface iTemplate

    {

    public function setVariable($name, $var);

    public function getHtml($template);

    }

    // 實(shí)現(xiàn)接口

    // 下面的寫法是正確的

    class Template implements iTemplate

    {

    private $vars = array();

    public function setVariable($name, $var)

    {

    $this->vars[$name] = $var;

    }

    public function getHtml($template)

    {

    foreach($this->vars as $name => $value) {

    $template = str_replace('{' . $name . '}', $value, $template);

    }

    return $template;

    }

    }

    9 屬性

    類的變量成員叫做“屬性”,屬性聲明是由關(guān)鍵字public或者protected或者private開頭,然后跟一個變量來組成。 屬性中的變量可以初始化,但是初始化的值必須是常數(shù),這里的常數(shù)是指php腳本在編譯階段時就為常數(shù),而不是在編譯階段之后在運(yùn)行階段運(yùn)算出的常數(shù)。

    在PHP5 中,預(yù)定義了兩個函數(shù)“__get()”和“__set()”來獲

    取和賦值其屬性,以及檢查屬性的“__isset()”和刪除屬性的方法“__unset()”。

    簡單的說一個是取值,一個是賦值。,“__set()”和“__get()”這兩個方法,這兩個方法不是默認(rèn)存在的,而是我們手工添加到類里面去的,像構(gòu)造方法(__construct())一樣, 類里面添加了才會存在,可以按下面的方式來添加這兩個方法,當(dāng)然也可以按個人的風(fēng)格來添加://__get()方法用來獲取私有屬性

    代碼如下:

    <?php

    class Person{

    //下面是人的成員屬性

    private $name; //人的名字

    private $sex; //人的性別

    private $age; //人的年齡

    //__get()方法用來獲取私有屬性

    private function __get($property_name){

    if(isset($this->$property_name)){

    return($this->$property_name);}else {

    return(NULL);

    }

    }

    }

    //__set()方法用來設(shè)置私有屬性

    private function __set($property_name, $value){

    $this->$property_name = $value;

    }

    //__isset()方法

    private function __isset($nm){

    echo "isset()函數(shù)測定私有成員時,自動調(diào)用<br>";

    return isset($this->$nm);

    }

    //__unset()方法

    private function __unset($nm){

    echo "當(dāng)在類外部使用unset()函數(shù)來刪除私有成員時自動調(diào)用的<br>";

    unset($this->$nm);

    }

    }

    $p1=new Person();

    $p1->name="this is a person name";

    //在使用isset()函數(shù)測定私有成員時,自動調(diào)用__isset()方法幫我們完成,返回結(jié)果為true

    echo var_dump(isset($p1->name))."<br>";

    echo $p1->name."<br>";

    //在使用unset()函數(shù)刪除私有成員時,自動調(diào)用__unset()方法幫我們完成,刪除name私有屬性

    unset($p1->name);

    //已經(jīng)被刪除了, 所這行不會有輸出

    echo $p1->name;

    ?>

    代碼如下:

    <?php

    class Person{

    //下面是人的成員屬性

    private $name;

    //人的名字

    private $sex;

    //人的性別

    private $age;

    //人的年齡

    //__get()方法用來獲取私有屬性

    private function __get($property_name){

    if(isset($this->$property_name)){

    return($this->$property_name);

    }else{

    return(NULL);

    }

    }

    }

    //__set()方法用來設(shè)置私有屬性

    private function __set($property_name, $value){

    $this->$property_name = $value;

    }

    //__isset()方法

    private function __isset($nm){

    echo "isset()函數(shù)測定私有成員時,自動調(diào)用<br>";

    return isset($this->$nm);

    }

    //__unset()方法

    private function __unset($nm){

    echo "當(dāng)在類外部使用unset()函數(shù)來刪除私有成員時自動調(diào)用的<br>";

    unset($this->$nm);

    }

    }

    $p1=new Person();

    $p1->name="this is a person name";

    //在使用isset()函數(shù)測定私有成員時,自動調(diào)用__isset()方法幫我們完成,返回結(jié)果為true

    echo var_dump(isset($p1->name))."<br>";

    echo $p1->name."<br>";

    //在使用unset()函數(shù)刪除私有成員時,自動調(diào)用__unset()方法幫我們完成,刪除name私有屬性

    unset($p1->name);

    //已經(jīng)被刪除了, 所這行不會有輸出

    echo $p1->name;

    ?>

    10 克隆

    對象復(fù)制可以通過clone關(guān)鍵字來完成(如果對象中存在__clone()方法,會先被調(diào)用)。對象中的 __clone()方法不能直接調(diào)用。

    當(dāng)對象被復(fù)制后,PHP5會對對象的所有屬性執(zhí)行一個“淺復(fù)制”(shallow copy)。所有的屬性中的引用 仍然不變,指向原來的變量。如果定義了__clone()方法,則新創(chuàng)建的對象(復(fù)制生成的對象)中的__clone()方法會被調(diào)用, 可用于修改屬性的值(如果有必要的話)。

    更多信息請查看IT技術(shù)專欄

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:PHP面向?qū)ο缶偨Y(jié)
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報(bào)班

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)