-
面向對象––實例解析查看全部
-
面向對象––實質查看全部
-
為什么要使用面向對象?查看全部
-
什么是面向對象?查看全部
-
對象的特點查看全部
-
對象的基本組成查看全部
-
什么是對象?查看全部
-
public function __get($name){ return "Getting the property: ".$name; } public function __set($name,$value){ echo "Setting the property:".$name." to value:".$value."\n"; } $obj=new MagicTest(); echo $obj->className."\n"; $obj->className = "MagicClassX";查看全部
-
/* 在給不可訪問屬性'賦值'時,__set()會被調用。 '讀取'不可訪問屬性的值時,__get()會被調用。 當對不可訪問屬性調用'isset()'或'empty()'時,__isset()會被調用。 當對不可訪問屬性調用'unset()'時,__unset會被的調用。 */查看全部
-
<?php class MagicTest{ //__tostring 會在把對象轉換為string的時候自動調用 public function __tostring(){ return "This is the Class MagicTest.\n"; } //__invoke 會在把對象當作一個方法調用的時候自動調用 public function __invoke($x){ echo "__invoke called with parameter ".$x."\n"; } //方法的重載 (overload) //第一個參數是調用方法的名稱;第二個參數是方法調用的參數組成的數組。 public function __call($name,$arguments){ //implode:分割數組 echo "Calling ".$name." with parameters: ".implode(",",$arguments)."\n"; } //靜態方法的重載,注意這個方法需要設定為static public static function __callStatic($name,$arguments){ echo "Static Calling".$name." with parameters: ".implode(",",$arguments)."\n"; } } $obj=new MagicTest(); //echo $obj; //echo $obj(5); $obj->runTest("para1","para2"); MagicTest::runTest("para1","para2"); ?>查看全部
-
<?php class MagicTest{ //__tostring 會在把對象轉換為string的時候自動調用 public function __tostring(){ return "This is the Class MagicTest.\n"; } //__invoke 會在把對象當作一個方法調用的時候自動調用 public function __invoke($x){ echo "__invoke called with parameter ".$x."\n"; } } $obj=new MagicTest(); echo $obj; echo $obj(5); ?>查看全部
-
<?php //abstract關鍵字用于定于抽象類 abstract class ACanEat{ //在抽象方法前面添加abstrac關鍵字可以標明這個方法時抽象方法而不需要具體實現 abstract public function eat($food); //抽象類中可以包含普通的方法,有方法的具體實現 public function breath(){ echo "Breath use the air. \n"; } } //繼承抽象類的關鍵字是extends class Human extends ACanEat{ //繼承抽象類的子類需要實現抽象類中定義的抽象方法 public function eat($food){ echo "Human eating ".$food."\n"; } } class Animal extends ACanEat{ public function eat($food){ echo "Animal eating ".$food."\n"; } } $man=new Human(); $man->eat('Apple'); $man->breath();//和animal類共有了抽象類中breath方法 $monkey=new Animal(); $monkey->eat('Banana'); $monkey->breath(); ?>查看全部
-
$obj=new Human(); $obj->eat('Apple'); $monkey=new Animal(); $monkey->eat('Banana'); //相同的一行代碼,對于傳入不同的接口的實現的對象的時候,表現是不同的。這就是多態。 checkEat($obj); checkEat($monkey);查看全部
-
//不能實例化接口 //instanceof(1)判斷一個對象是否是某個類的實例 //instanceof(2)判斷一個對象是否實現了某個接口 var_dump($obj instanceof ICanEat); function checkEat($obj){ if($obj instanceof ICanEat){ $obj->eat('food'); }else{ echo "The obj can't eat.\n"; } } checkEat($obj); checkEat($monkey); //可以用extends讓接口繼承接口 interface ICanPee extends ICanEat{ public function pee(); } //當類實現子接口時,父接口定義的方法也需要在這個類里實現 class Human1 implements ICanPee{ public function eat($food){} public function pee(){} }查看全部
-
<?php //interface關鍵字用于定義接口 interface ICanEat{ //接口里面的方法不需要有方法的實現 public function eat($food); } // implements關鍵字用于表示類實現某個接口 class Human implements ICanEat{ //實現了某個接口之后,必須提供接口中定義的方法的具體實現。 public function eat($food){ echo "Human eating ".$food."\n"; } } $obj=new Human(); $obj->eat('Apple'); ?>查看全部
舉報
0/150
提交
取消