亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

PHP進階篇

Jason PHP開發工程師
難度初級
時長 9小時28分
學習人數
綜合評分8.90
570人評價 查看評價
9.3 內容實用
8.8 簡潔易懂
8.6 邏輯清晰
  • PHP類和對象之重載

    PHP中的重載指的是動態的創建屬性與方法,是通過魔術方法來實現的。屬性的重載通過__set,__get,__isset,__unset來分別實現對不存在屬性的賦值、讀取、判斷屬性是否設置、銷毀屬性。


    查看全部
  • PHP類和對象之訪問控制

    被定義為公有的類成員可以在任何地方被訪問。被定義為受保護的類成員則可以被其自身以及其子類和父類訪問。被定義為私有的類成員則只能被其定義所在的類訪問。

    如果構造函數定義成了私有方法,則不允許直接實例化對象了,這時候一般通過靜態方法進行實例化,在設計模式中會經常使用這樣的方法來控制對象的創建,比如單例模式只允許有一個全局唯一的對象。

    查看全部
  • PHP類和對象之Static靜態關鍵字

    靜態屬性與方法可以在不實例化類的情況下調用,直接使用類名::方法名的方式進行調用。靜態屬性不允許對象使用->操作符調用。

    靜態方法中,$this偽變量不允許使用。可以使用self,parent,static在內部調用靜態方法與屬性。

    查看全部
  • PHP類和對象之構造函數和析構函數

    在子類中如果定義了__construct則不會調用父類的__construct,如果需要同時調用父類的構造函數,需要使用parent::__construct()顯式的調用


    查看全部
  • PHP類和對象之定義類的方法

    使用關鍵字static修飾的,稱之為靜態方法,靜態方法不需要實例化對象,可以通過類名直接調用,操作符為雙冒號::。

    查看全部
  • PHP類和對象之類的屬性

    一般通過->對象操作符來訪問對象的屬性或者方法,對于靜態屬性則使用::雙冒號進行訪問。當在類成員方法內部調用的時候,可以使用$this偽變量調用當前對象的屬性。

    受保護的屬性與私有屬性不允許外部調用,在類的成員方法內部是可以調用的。

    查看全部
  • PHP類和對象之創建一個對象

    方法內部可以使用$this偽變量調用對象的屬性或者方法


    查看全部
  • 正則表達式中具有特殊含義的字符稱之為元字符,常用的元字符有:

    \ 一般用于轉義字符
    ^ 斷言目標的開始位置(或在多行模式下是行首)
    $ 斷言目標的結束位置(或在多行模式下是行尾)
    . 匹配除換行符外的任何字符(默認)
    [ 開始字符類定義
    ] 結束字符類定義
    | 開始一個可選分支
    ( 子組的開始標記
    ) 子組的結束標記
    ? 作為量詞,表示 0 次或 1 次匹配。位于量詞后面用于改變量詞的貪婪特性。 (查閱量詞)
    * 量詞,0 次或多次匹配
    + 量詞,1 次或多次匹配
    { 自定義量詞開始標記
    } 自定義量詞結束標記

    //下面的\s匹配任意的空白符,包括空格,制表符,換行符。[^\s]代表非空白符。[^\s]+表示一次或多次匹配非空白符。
    $p?=?'/^我[^\s]+(蘋果|香蕉)$/';
    $str?=?"我喜歡吃蘋果";
    if?(preg_match($p,?$str))?{
    ????echo?'匹配成功';
    }

    元字符具有兩種使用場景,一種是可以在任何地方都能使用,另一種是只能在方括號內使用,在方括號內使用的有:

    \ 轉義字符
    ^ 僅在作為第一個字符(方括號內)時,表明字符類取反
    - 標記字符范圍

    其中^在反括號外面,表示斷言目標的開始位置,但在方括號內部則代表字符類取反,方括號內的減號-可以標記字符范圍,例如0-9表示0到9之間的所有數字。

    //下面的\w匹配字母或數字或下劃線。
    $p?=?'/[\w\.\-]+@[a-z0-9\-]+\.(com|cn)/';
    $str?=?"我的郵箱是[email protected]";
    preg_match($p,?$str,?$match);
    echo?$match[0];


    查看全部
    0 采集 收起 來源:元字符與轉義

    2020-04-06

  • PCRE庫函數中,正則匹配模式使用分隔符與元字符組成,分隔符可以是非數字、非反斜線、非空格的任意字符。經常使用的分隔符是正斜線(/)、hash符號(#) 以及取反符號(~),例如:

    /foo?bar/
    #^[^0-9]$#
    ~php~

    如果模式中包含分隔符,則分隔符需要使用反斜杠(\)進行轉義。

    /http:\/\//

    如果模式中包含較多的分割字符,建議更換其他的字符作為分隔符,也可以采用preg_quote進行轉義。

    $p?=?'http://';
    $p?=?'/'.preg_quote($p,?'/').'/';
    echo?$p;

    分隔符后面可以使用模式修飾符,模式修飾符包括:i, m, s, x等,例如使用i修飾符可以忽略大小寫匹配:

    $str?=?"Http://www.xianlaiwan.cn/";
    if?(preg_match('/http/i',?$str))?{
    ????echo?'匹配成功';
    }


    查看全部
  • PHP中使用PCRE庫函數進行正則匹配,比如上例中的preg_match用于執行一個正則匹配,常用來判斷一類字符模式是否存在。

    查看全部
  • 對象比較,當同一個類的兩個實例的所有屬性都相等時,可以使用比較運算符==進行判斷,當需要判斷兩個變量是否為同一個對象的引用時,可以使用全等運算符===進行判斷。

    class?Car?{
    }
    $a?=?new?Car();
    $b?=?new?Car();
    if?($a?==?$b)?echo?'==';???//true
    if?($a?===?$b)?echo?'===';?//false

    對象復制,在一些特殊情況下,可以通過關鍵字clone來復制一個對象,這時__clone方法會被調用,通過這個魔術方法來設置屬性的值。

    class?Car?{
    ????public?$name?=?'car';
    ????
    ????public?function?__clone()?{
    ????????$obj?=?new?Car();
    ????????$obj->name?=?$this->name;
    ????}
    }
    $a?=?new?Car();
    $a->name?=?'new?car';
    $b?=?clone?$a;
    var_dump($b);

    對象序列化,可以通過serialize方法將對象序列化為字符串,用于存儲或者傳遞數據,然后在需要的時候通過unserialize將字符串反序列化成對象進行使用。

    class?Car?{
    ????public?$name?=?'car';
    }
    $a?=?new?Car();
    $str?=?serialize($a);?//對象序列化成字符串
    echo?$str.'<br>';
    $b?=?unserialize($str);?//反序列化為對象
    var_dump($b);


    查看全部
  • PHP中的重載指的是動態的創建屬性與方法,是通過魔術方法來實現的。屬性的重載通過__set,__get,__isset,__unset來分別實現對不存在屬性的賦值、讀取、判斷屬性是否設置、銷毀屬性。

    class?Car?{
    ????private?$ary?=?array();
    ????
    ????public?function?__set($key,?$val)?{
    ????????$this->ary[$key]?=?$val;
    ????}
    ????
    ????public?function?__get($key)?{
    ????????if?(isset($this->ary[$key]))?{
    ????????????return?$this->ary[$key];
    ????????}
    ????????return?null;
    ????}
    ????
    ????public?function?__isset($key)?{
    ????????if?(isset($this->ary[$key]))?{
    ????????????return?true;
    ????????}
    ????????return?false;
    ????}
    ????
    ????public?function?__unset($key)?{
    ????????unset($this->ary[$key]);
    ????}
    }
    $car?=?new?Car();
    $car->name?=?'汽車';??//name屬性動態創建并賦值
    echo?$car->name;

    方法的重載通過__call來實現,當調用不存在的方法的時候,將會轉為參數調用__call方法,當調用不存在的靜態方法時會使用__callStatic重載。

    class?Car?{
    ????public?$speed?=?0;
    ????
    ????public?function?__call($name,?$args)?{
    ????????if?($name?==?'speedUp')?{
    ????????????$this->speed?+=?10;
    ????????}
    ????}
    }
    $car?=?new?Car();
    $car->speedUp();?//調用不存在的方法會使用重載
    echo?$car->speed;


    查看全部
  • empty()?函數用于檢查一個變量是否為空。

    類屬性必須定義為公有、受保護、私有之一。為兼容PHP5以前的版本,如果采用 var 定義,則被視為公有。

    查看全部
  • 靜態屬性與方法可以在不實例化類的情況下調用,直接使用類名::方法名的方式進行調用。靜態屬性不允許對象使用->操作符調用。

    class?Car?{
    ????private?static?$speed?=?10;
    ????
    ????public?static?function?getSpeed()?{
    ????????return?self::$speed;
    ????}
    }
    echo?Car::getSpeed();??//調用靜態方法

    靜態方法也可以通過變量來進行動態調用

    $func?=?'getSpeed';
    $className?=?'Car';
    echo?$className::$func();??//動態調用靜態方法

    靜態方法中,$this偽變量不允許使用??梢允褂胹elf,parent,static在內部調用靜態方法與屬性。

    class?Car?{
    ????private?static?$speed?=?10;
    ????
    ????public?static?function?getSpeed()?{
    ????????return?self::$speed;
    ????}
    ????
    ????public?static?function?speedUp()?{
    ????????return?self::$speed+=10;
    ????}
    }
    class?BigCar?extends?Car?{
    ????public?static?function?start()?{
    ????????parent::speedUp();
    ????}
    }BigCar::start();echo?BigCar::getSpeed();


    查看全部
  • PHP5可以在類中使用__construct()定義一個構造函數,具有構造函數的類,會在每次對象創建的時候調用該函數,因此常用來在對象創建的時候進行一些初始化工作。

    class?Car?{
    ???function?__construct()?{
    ???????print?"構造函數被調用\n";
    ???}
    }
    $car?=?new?Car();?//實例化的時候?會自動調用構造函數__construct,這里會輸出一個字符串

    在子類中如果定義了__construct則不會調用父類的__construct,如果需要同時調用父類的構造函數,需要使用parent::__construct()顯式的調用。

    class?Car?{
    ???function?__construct()?{
    ???????print?"父類構造函數被調用\n";
    ???}
    }
    class?Truck?extends?Car?{
    ???function?__construct()?{
    ???????print?"子類構造函數被調用\n";
    ???????parent::__construct();
    ???}
    }
    $car?=?new?Truck();

    同樣,PHP5支持析構函數,使用__destruct()進行定義,析構函數指的是當某個對象的所有引用被刪除,或者對象被顯式的銷毀時會執行的函數。

    class?Car?{
    ???function?__construct()?{
    ???????print?"構造函數被調用?\n";
    ???}
    ???function?__destruct()?{
    ???????print?"析構函數被調用?\n";
    ???}
    }
    $car?=?new?Car();?//實例化時會調用構造函數
    echo?'使用后,準備銷毀car對象?\n';
    unset($car);?//銷毀時會調用析構函數

    當PHP代碼執行完畢以后,會自動回收與銷毀對象,因此一般情況下不需要顯式的去銷毀對象。


    查看全部

舉報

0/150
提交
取消
課程須知
需要有一定的網頁基礎知識如HTML、CSS樣式等,并且已經學習完成《PHP入門篇》對PHP已經有了簡單的了解,如變量、常量、數據類型等。
老師告訴你能學到什么?
全面的掌握PHP的理論知識與實踐中的應用方法,提高編程能力與掌握網頁開發技能。

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!