1 ?php 2 //檢測變數型別,自己用的最多的是is_array()了,其他的幾乎沒用過 3 $array = array(1,9.9,'abc',array(1,2,3),true,null,); 4 v(is_bool(111)); //false 5 v(is_integer(9.9)); //false 6 v(is_double(9.9)); //true 7 v(is_string('abc')); //true 8 v(is_null('')); //false 9 v(is_null(null)); //true 10 v(is_array($array)); //true 11 function v($var){ 12 var_dump($var); 13 } 14 ?>
//型別提示
1 <?php 2 class A{ 3 public $name = 'a'; 4 public function say(){ 5 echo 'I am ',$this->name; 6 } 7 } 8 class B{ 9 //型別提示 10 public function say(A $A){ 11 return $A->say(); 12 } 13 } 14 class C{} 15 $A = new A(); 16 $B = new B(); 17 $B->say($A); //I am a 18 $B->say(new C()); //報錯 Argument 1 passed to B::say() must be an instance of A, instance of C given 19 ?>
靜態方法和屬性
static關鍵字是在php 5才引入的。
靜態方法是以類為作用域的函式,不能訪問這個類中的普通屬性,因為普通屬性屬於一個物件,但可訪問靜態屬性。
1 <?php 2 class A{ 3 static public $msg='hello'; 4 static function say(){ 5 return self::$msg; 6 } 8 } 9 class B extends A{ 10 static public $msg = 'world'; 11 static function say(){ 12 return parent::say().' '.self::$msg; 13 } 14 } 15 echo B::say(); //hello world 16 ?>
常量:類訪問,宣告時無需$符,且值不可改
1 <?php 2 //類訪問,宣告時無需$符,且值不可改 3 class A{ 4 const PI = 3.14; 5 public function test(){ 6 //self::PI = 3.15; //報錯 7 return self::PI; 8 } 9 } 10 $a = new A(); 11 echo $a::PI; //3.14 12 echo $a->test(); //3.14 13 ?>
抽象類:PHP 5引入,不能被例項化,只定義或部分實現子類需要的方法。子類繼承並實現其中的抽象方法,使抽象類具體化。
1 <?php 2 abstract class A{ 3 protected $name; 4 public function sing(){ 5 6 } 7 abstract public function eat(); //以分號結束 8 } 9 //$a = new A(); //Cannot instantiate abstract class A 10 11 class dog extends A{ 12 // Class dog contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (A::eat) 13 } 14 ?>
多數情況下,抽象類至少包含一個抽象方法,其中不能有具體內容。如下:
abstrac function test();
抽象類的每個子類都必須實現抽象類中的所有抽象方法。新的實現方法的訪問控制許可權不能比抽象方法嚴格,引數個數也要一致。
原文部落格地址:http://www.cnblogs.com/lltong/