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

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

PHP面向對象編程

難度初級
時長 3小時14分
學習人數
綜合評分9.67
292人評價 查看評價
9.9 內容實用
9.7 簡潔易懂
9.4 邏輯清晰
  • 多態 <?php date_default_timezone_set("PRC"); /** * 多態 * 1. 只要某個對象實現了接口(instanceof),就可以直接在對象上調用接口的方法 */ interface ICanEat { public function eat($food); } // Human類實現了ICanEat接口 class Human implements ICanEat { // 跟Animal類的實現是不同的 public function eat($food){ echo "Human eating " . $food . "\n"; } } // Animal類實現了ICanEat接口 class Animal implements ICanEat { public function eat($food){ echo "Animal eating " . $food . "\n"; } } function eat($obj){ if($obj instanceof ICanEat){ $obj->eat("FOOD"); // 不需要知道到底是Human還是Animal,直接吃就行了 }else{ echo "Can't eat!\n"; } } $man = new Human(); $monkey = new Animal(); // 同樣的代碼,傳入接口的不同實現類的時候,表現不同。這就是為什么成為多態的原因。 eat($man); eat($monkey); ?>
    查看全部
    0 采集 收起 來源:課程總結

    2018-03-22

  • 接口 (2) // step1 不同的類可以實現同一個接口,定義接口方法的不同實現 $man = new Human(); $man->eat("Apple"); $monkey = new Animal(); $monkey->eat("Banana"); // step2 嘗試刪除Human的eat方法并運行 // 實現了某個接口的類必須提供接口中定義的方法 // step3 不能用接口創建對象,但是能夠判斷某個對象是否實現了某個接口 //$eatObj = new ICanEat(); var_dump($man instanceof ICanEat); // 判斷某個對象是否實現了某個接口 // step 4 接口可以繼承接口 interface ICanPee extends ICanEat { public function pee(); } class Human1 implements ICanPee{ public function pee(){} } ?>
    查看全部
    0 采集 收起 來源:課程總結

    2018-03-22

  • 接口 (1) <?php date_default_timezone_set("PRC"); /** * 接口 * 1. 接口的基本概念和基本使用方法 * 2. 接口里面的方法沒有具體的實現 * 3. 實現了某個接口的類必須提供接口中定義的方法 * 4. 不能用接口創建對象,但是能夠判斷某個對象是否實現了某個接口 * 5. 接口可以繼承接口(interface extends interface) * 6. 接口中定義的所有方法都必須是公有,這是接口的特性。 */ interface ICanEat { public function eat($food); } // Human類實現了ICanEat接口 class Human implements ICanEat { // 跟Animal類的實現是不同的 public function eat($food){ echo "Human eating " . $food . "\n"; } } // Animal類實現了ICanEat接口 class Animal implements ICanEat { public function eat($food){ echo "Animal eating " . $food . "\n"; } }
    查看全部
    0 采集 收起 來源:課程總結

    2018-03-22

  • 類的繼承 <?php date_default_timezone_set("PRC"); /** * 重寫和Final * 1. 子類中編寫跟父類完全一致的方法可以完成對父類方法的重寫 * 2. 對于不想被任何類繼承的類可以在class之前添加final關鍵字 * 3. 對于不想被子類重寫(overwrite, 修改)的方法,可以在方法定義前面添加final關鍵字 */ class BaseClass { public function test() { echo "BaseClass::test() called\n"; } public function moreTesting() { echo "BaseClass::moreTesting() called\n"; } } class ChildClass extends BaseClass { // 重寫時參數不一定要跟父類完全一致 public function moreTesting($tmp=null) { echo "ChildClass::moreTesting() called\n"; } } // Results in Fatal error: Cannot override final method BaseClass::moreTesting() $obj = new ChildClass(); $obj->moreTesting(); ?>
    查看全部
    0 采集 收起 來源:課程總結

    2018-03-22

  • 魔術方法 (2) // 通過這兩個方法可以實現動態的對象屬性 public function __get($name){ return "Getting the property " . $name; } public function __set($name, $value){ echo "Setting the property " . $name . " to value ". $value. "\n"; } public function __isset($name){ echo "__isset invoked\n"; return false; } public function __unset($name){ echo "unsetting property " . $name; } } $obj = new MagicTest(); echo $obj->name . "\n"; $obj->name = "Name Value"; echo '$obj->name is set? '. isset($obj->name) . "\n"; echo '$obj->name is empty?' . empty($obj->name) . "\n"; unset($obj->name); ?>
    查看全部
    0 采集 收起 來源:課程總結

    2018-03-22

  • 魔術方法 (1) <?php date_default_timezone_set("PRC"); /** * 魔術方法3之屬性重載 * 1. 在給不可訪問屬性賦值時,__set() 會被調用。 * 2. 讀取不可訪問屬性的值時,__get() 會被調用。 * 3. 當對不可訪問屬性調用 isset() 和empty()時,__isset() 會被調用。 * 4. 當對不可訪問屬性調用 unset() 時,__unset() 會被調用 */ class MagicTest{ public function __tostring(){ return "This is the Class MagicTest.\n"; } public function __invoke($x){ echo "__invoke called with parameter " . $x . "\n"; } public function __call($name, $arguments){ echo "Calling " . $name . " with parameters: " . implode(', ', $arguments) . "\n"; } public static function __callStatic($name, $arguments){ echo "Static calling " . $name . " with parameters: " . implode(', ', $arguments) . "\n"; }
    查看全部
    0 采集 收起 來源:課程總結

    2018-03-22

  • 對不可訪問屬性調用isset()和empty()時,會觸發__isset()魔術方法,注意isset和empty不是相反的關系,isset判斷的是值是否被定義過,empty認為沒定義過的返回true
    查看全部
  • 既然類可以實現,為什么還要用接口? 接口是一種標準,簡單說,比如有個說話的函數/方法,有些人用say(),有些人用shuo(),有些人用其他的,這可不行,這時候定義一個接口,所有人都得用同一個寫法
    查看全部
  • $this是php中的偽變量,可以通過其訪問對象的屬性及方法
    查看全部
  • Object Oriented
    查看全部
  • 我非常熟悉面向對象!
    查看全部
  • clone 可以克隆一個屬性完全相同的一個新對象。例: $james = new NbaPlayer(); $james->name = 'James'; $james2 = clone $james; echo $james2->name; 如果類里實現了__colne()方法,則在調用clone方法時,會調用__clone方法。例:
    查看全部
  • 當對不可訪問的屬性調用unset()時,__unset()會被調用
    查看全部
  • __isset($name); //當對不可訪問屬性調用isset()或empty()方法時被調用
    查看全部
  • __set(); //在給不可訪問屬性賦值時被調用
    查看全部

舉報

0/150
提交
取消
課程須知
1、本門課程是立志想成為優秀程序員的必修課 2、基本概念部分適合所有人學習 3、實踐部分則需要有基本的PHP知識,這樣會更加有利于你對面向對象的理解和掌握
老師告訴你能學到什么?
1、面向對象的基本概念 2、面向對象的基本思路 3、面向對象的基本原則 4、類的概念和PHP實踐 5、繼承的概念和案例實踐 6、接口的概念和案例實踐 7、多態的概念和案例實踐 8、PHP中的魔術方法基本實踐

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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