第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

PHP進(jìn)階篇

Jason PHP開(kāi)發(fā)工程師
難度初級(jí)
時(shí)長(zhǎng) 9小時(shí)28分
學(xué)習(xí)人數(shù)
綜合評(píng)分8.90
570人評(píng)價(jià) 查看評(píng)價(jià)
9.3 內(nèi)容實(shí)用
8.8 簡(jiǎn)潔易懂
8.6 邏輯清晰
  • preg_match用來(lái)執(zhí)行一個(gè)匹配,可以簡(jiǎn)單的用來(lái)判斷模式是否匹配成功,或者取得一個(gè)匹配結(jié)果,他的返回值是匹配成功的次數(shù)0或者1,在匹配到1次以后就會(huì)停止搜索。

    $subject = "abcdef";
    $pattern = '/a(.*?)d/';
    preg_match($pattern, $subject, $matches);
    print_r($matches); //結(jié)果為:Array ( [0] => abcd [1] => bc )

    匹配email的方法:

    $subject = "my email is spark@imooc.com";
    $pattern = '/[\w\-]+@\w+\.\w+/';
    preg_match($pattern, $subject, $matches);
    echo $matches[0];//matches指存入的容器


    查看全部
  • 貪婪模式:在可匹配與可不匹配的時(shí)候,優(yōu)先匹配

    //下面的\d表示匹配數(shù)字
    $p = '/\d+\-\d+/';$str = "我的電話是010-12345678";preg_match($p, $str, $match);echo $match[0]; //結(jié)果為:010-12345678

    懶惰模式:在可匹配與可不匹配的時(shí)候,優(yōu)先不匹配

    $p = '/\d?\-\d?/';
    $str = "我的電話是010-12345678";
    preg_match($p, $str, $match);
    echo $match[0]; ?//結(jié)果為:0-1

    當(dāng)我們確切的知道所匹配的字符長(zhǎng)度的時(shí)候,可以使用{}指定匹配字符數(shù)

    $p = '/\d{3}\-\d{8}/';
    $str = "我的電話是010-12345678";
    preg_match($p, $str, $match);
    echo $match[0]; //結(jié)果為:010-12345678


    查看全部
    0 采集 收起 來(lái)源:貪婪模式與懶惰模式

    2021-02-11

  • 常用的元字符有:

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


    方括號(hào)內(nèi)使用的有:

    \ 轉(zhuǎn)義字符
    ^ 僅在作為第一個(gè)字符(方括號(hào)內(nèi))時(shí),表明字符類取反
    - 標(biāo)記字符范圍

    其中^在反括號(hào)外面,表示斷言目標(biāo)的開(kāi)始位置,但在方括號(hào)內(nèi)部則代表字符類取反,方括號(hào)內(nèi)的減號(hào)-可以標(biāo)記字符范圍,例如0-9表示0到9之間的所有數(shù)字。


    查看全部
    0 采集 收起 來(lái)源:元字符與轉(zhuǎn)義

    2021-02-11

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

    /http:\/\//

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

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

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

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


    查看全部
  • $p = '/apple/';//注意不要少了兩個(gè)‘/’
    $str = "apple banna";
    if (preg_match($p, $str)) {
    ? ?echo 'matched';
    }

    其中字符串'/apple/'就是一個(gè)正則表達(dá)式,他用來(lái)匹配源字符串中是否存在apple字符串。

    PHP中使用PCRE庫(kù)函數(shù)進(jìn)行正則匹配,比如上例中的preg_match用于執(zhí)行一個(gè)正則匹配,常用來(lái)判斷一類字符模式是否存在。


    查看全部
  • 對(duì)象比較,當(dāng)同一個(gè)類的兩個(gè)實(shí)例的所有屬性都相等時(shí),可以使用比較運(yùn)算符==進(jìn)行判斷,當(dāng)需要判斷兩個(gè)變量是否為同一個(gè)對(duì)象的引用時(shí),可以使用全等運(yùn)算符===進(jìn)行判斷。

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

    對(duì)象復(fù)制,在一些特殊情況下,可以通過(guò)關(guān)鍵字clone來(lái)復(fù)制一個(gè)對(duì)象,這時(shí)__clone方法會(huì)被調(diào)用,通過(guò)這個(gè)魔術(shù)方法來(lái)設(shè)置屬性的值。

    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);

    對(duì)象序列化,可以通過(guò)serialize方法將對(duì)象序列化為字符串,用于存儲(chǔ)或者傳遞數(shù)據(jù),然后在需要的時(shí)候通過(guò)unserialize將字符串反序列化成對(duì)象進(jìn)行使用。

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


    查看全部
  • 屬性的重載通過(guò)__set,__get,__isset,__unset來(lái)分別實(shí)現(xiàn)對(duì)不存在屬性的賦值、讀取、判斷屬性是否設(shè)置、銷毀屬性。

    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屬性動(dòng)態(tài)創(chuàng)建并賦值
    echo $car->name;

    方法的重載通過(guò)__call來(lái)實(shí)現(xiàn),當(dāng)調(diào)用不存在的方法的時(shí)候,將會(huì)轉(zhuǎn)為參數(shù)調(diào)用__call方法,當(dāng)調(diào)用不存在的靜態(tài)方法時(shí)會(huì)使用__callStatic重載。

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


    查看全部
  • class Car {

    ? ? public $speed = 0; //汽車的起始速度是0

    ? ??

    ? ? public function speedUp() {

    ? ? ? ? $this->speed += 10;

    ? ? ? ? return $this->speed;

    ? ? }

    }

    //定義繼承于Car的Truck類

    class Truck extends Car//注意沒(méi)有()

    {

    ? ? public function speedUp(){

    ? ? ? ? $this->speed=parent::speedUp()+50;

    ? ? }

    }


    $car = new Truck();

    $car->speedUp();

    echo $car->speed;


    查看全部
  • 類屬性必須定義為公有、受保護(hù)、私有之一。為兼容PHP5以前的版本,如果采用 var 定義,則被視為公有。

    class Car {
    ? ?$speed = 10; //錯(cuò)誤 屬性必須定義訪問(wèn)控制
    ? ?public $name; ? //定義共有屬性
    }

    類中的方法可以被定義為公有、私有或受保護(hù)。如果沒(méi)有設(shè)置這些關(guān)鍵字,則該方法默認(rèn)為公有。

    class Car {
    ? ?//默認(rèn)為共有方法
    ? ?function turnLeft() {
    ? ?}
    }

    如果構(gòu)造函數(shù)定義成了私有方法,則不允許直接實(shí)例化對(duì)象了,這時(shí)候一般通過(guò)靜態(tài)方法進(jìn)行實(shí)例化,在設(shè)計(jì)模式中會(huì)經(jīng)常使用這樣的方法來(lái)控制對(duì)象的創(chuàng)建,比如單例模式只允許有一個(gè)全局唯一的對(duì)象。

    class Car {
    ? ?private function __construct() {
    ? ? ? ?echo 'object create';
    ? ?}

    ? ?private static $_object = null;
    ? ?public static function getInstance() {
    ? ? ? ?if (empty(self::$_object)) {
    ? ? ? ? ? ?self::$_object = new Car(); //內(nèi)部方法可以調(diào)用私有方法,因此這里可以創(chuàng)建對(duì)象
    ? ? ? ?}
    ? ? ? ?return self::$_object;
    ? ?}
    }
    //$car = new Car(); //這里不允許直接實(shí)例化對(duì)象
    $car = Car::getInstance(); //通過(guò)靜態(tài)方法來(lái)獲得一個(gè)實(shí)例


    查看全部
  • 靜態(tài)屬性與方法可以在不實(shí)例化類的情況下調(diào)用,直接使用類名::方法名的方式進(jìn)行調(diào)用。靜態(tài)屬性不允許對(duì)象使用->操作符調(diào)用。

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

    靜態(tài)方法也可以通過(guò)變量來(lái)進(jìn)行動(dòng)態(tài)調(diào)用

    $func = 'getSpeed';
    $className = 'Car';
    echo $className::$func(); ?//動(dòng)態(tài)調(diào)用靜態(tài)方法

    靜態(tài)方法中,$this偽變量不允許使用??梢允褂胹elf,parent,static在內(nèi)部調(diào)用靜態(tài)方法與屬性。

    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();


    查看全部
  • 使用__construct()定義一個(gè)構(gòu)造函數(shù),具有構(gòu)造函數(shù)的類,會(huì)在每次對(duì)象創(chuàng)建的時(shí)候調(diào)用該函數(shù),因此常用來(lái)在對(duì)象創(chuàng)建的時(shí)候進(jìn)行一些初始化工作。

    class Car {
    ? function __construct() {
    ? ? ? print "構(gòu)造函數(shù)被調(diào)用\n";
    ? }
    }
    $car = new Car(); //實(shí)例化的時(shí)候 會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù)__construct,這里會(huì)輸出一個(gè)字符串

    在子類中如果定義了__construct則不會(huì)調(diào)用父類的__construct,如果需要同時(shí)調(diào)用父類的構(gòu)造函數(shù),需要使用parent::__construct()顯式的調(diào)用。

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

    同樣,PHP5支持析構(gòu)函數(shù),使用__destruct()進(jìn)行定義,析構(gòu)函數(shù)指的是當(dāng)某個(gè)對(duì)象的所有引用被刪除,或者對(duì)象被顯式的銷毀時(shí)會(huì)執(zhí)行的函數(shù)。

    class Car {
    ? function __construct() {
    ? ? ? print "構(gòu)造函數(shù)被調(diào)用 \n";
    ? }
    ? function __destruct() {
    ? ? ? print "析構(gòu)函數(shù)被調(diào)用 \n";
    ? }
    }
    $car = new Car(); //實(shí)例化時(shí)會(huì)調(diào)用構(gòu)造函數(shù)
    echo '使用后,準(zhǔn)備銷毀car對(duì)象 \n';
    unset($car); //銷毀時(shí)會(huì)調(diào)用析構(gòu)函數(shù)

    注意:construct前有兩個(gè)_

    查看全部
  • 同屬性一樣,類的方法也具有public,protected 以及?private 的訪問(wèn)控制。

    訪問(wèn)控制的關(guān)鍵字代表的意義為:
    public:公開(kāi)的
    protected:受保護(hù)的
    private:私有的

    我們可以這樣定義方法:

    class Car {
    ? ?public function getName() {
    ? ? ? ?return '汽車';
    ? ?}
    }
    $car = new Car();
    echo $car->getName();

    使用關(guān)鍵字static修飾的,稱之為靜態(tài)方法,靜態(tài)方法不需要實(shí)例化對(duì)象,可以通過(guò)類名直接調(diào)用,操作符為雙冒號(hào)::。

    class Car {
    ? ?public static function getName() {
    ? ? ? ?return '汽車';
    ? ?}
    }
    echo Car::getName(); //結(jié)果為“汽車”


    查看全部
  • //定義一個(gè)類
    class Car {
    ? ?//定義屬性
    ? ?public $name = '汽車';

    ? ?//定義方法
    ? ?public function getName() {
    ? ? ? ?//方法內(nèi)部可以使用$this偽變量調(diào)用對(duì)象的屬性或者方法
    ? ? ? ?return $this->name;
    ? ?}
    }

    要?jiǎng)?chuàng)建一個(gè)類的實(shí)例,可以使用new關(guān)鍵字創(chuàng)建一個(gè)對(duì)象。

    $car = new Car();
    //也可以采用變量來(lái)創(chuàng)建
    $className = 'Car';
    $car = new $className();


    查看全部
  • 常定義一個(gè)汽車類的方法為:

    class Car {
    ? ?$name = '汽車';
    ? ?function getName() {
    ? ? ? ?return $this->name;
    ? ?}}

    類是一類東西的結(jié)構(gòu)描述,而對(duì)象則是一類東西的一個(gè)具體實(shí)例,例如汽車這個(gè)名詞可以理解為汽車的總類,但這輛汽車則是一個(gè)具體的汽車對(duì)象。

    對(duì)象通過(guò)new關(guān)鍵字進(jìn)行實(shí)例化:

    $car = new Car();
    echo $car->getName();


    查看全部
    0 采集 收起 來(lái)源:PHP類和對(duì)象

    2021-02-10

  • 用數(shù)組變量的名字后跟中括號(hào)+鍵的方式來(lái)訪問(wèn)數(shù)組中的值,鍵使用單引號(hào)或者雙引號(hào)括起來(lái)。

    比如:

    $fruit = array('apple'=>"蘋果",'banana'=>"香蕉",'pineapple'=>"菠蘿");

    $fruit0 = $fruit['banana'];

    print_r($fruit0);


    查看全部

舉報(bào)

0/150
提交
取消
課程須知
需要有一定的網(wǎng)頁(yè)基礎(chǔ)知識(shí)如HTML、CSS樣式等,并且已經(jīng)學(xué)習(xí)完成《PHP入門篇》對(duì)PHP已經(jīng)有了簡(jiǎn)單的了解,如變量、常量、數(shù)據(jù)類型等。
老師告訴你能學(xué)到什么?
全面的掌握PHP的理論知識(shí)與實(shí)踐中的應(yīng)用方法,提高編程能力與掌握網(wǎng)頁(yè)開(kāi)發(fā)技能。

微信掃碼,參與3人拼團(tuán)

微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

友情提示:

您好,此課程屬于遷移課程,您已購(gòu)買該課程,無(wú)需重復(fù)購(gòu)買,感謝您對(duì)慕課網(wǎng)的支持!