個人做的筆記.....用於借鑒,如有錯請指出,謝謝
代碼如下 復制代碼<?php
/*******************************************
Class 對象實例說明( 普通類 )
*******************************************/
class ClassDemo{
public $PublicVar;
private $PrivateVar;//私有變量 外部不能調用
protected $ProtectedVar;//受保護變量 外部與子類不可訪問
public static $StaticVar=0;//static 靜態變量 靜態方法 不能訪問非靜態方法與變量,非靜態方法與變量可以訪問靜太方法與變量
const constVar='';//當你有一個屬性,不希望被修改,則考慮使用const 做成常量,使用 類名::常量名; 接口名::常量
/*
1.常量在定義的時候需要賦初值
2.常量不能修改.
3.常量名不能有 $, 一般是大寫, 默認是public
4.常量在類的內部使用 self::常量的名稱 類名::常量的名稱
*/
public function __construct( /*$name*/ ){//這個可以帶參數,帶了參數之後必創建時必須也帶有參數,不然會出錯
//$this->PublicVar=$name;
//self::$StaticVar++;//靜態變量內部訪問方法 外部訪問方法 對象名::變量名( ClassDemo::$StaticVar )
$this->PublicVar='$PublicVar';
$this->PrivateVar='$PrivateVar';
$this->ProtectedVar='$ProtectedVar';
self::$StaticVar++;
echo "ClassDemo __construct<br />";
}
public function __destruct(){//析構函數
}
final public function fun(){
/*
final 關鍵字( PHP5 中出現 )
希望方法不被其它的類繼承時間覆蓋, 可以使用final
當這個關鍵字用來修飾類的時候,那麼這個類將不可被其它類給繼承(可以實例化)
注:此關鍵字不能用於修飾變量
*/
}
}//End Class
/*******************************************
Class 對象實例說明( 抽象類 )
*******************************************/
abstract class AbstractDemo{
/***************************************
1.抽象類不能被實例化
2.抽象類不一定要包含abstract方法。
也就是說抽象類可以沒有abstract方法
3.一旦包含了abstract方法,則這個類必須
聲明為abstract
4.抽象類不能有函數體
5.如果一個類繼續了某個抽象類,則他必須實現
該抽象類的所有抽象方法。(除非它自己也聲明為抽象類)
***************************************/
}
/*******************************************
Class 對象實例說明( 繼承類 )
*******************************************/
class DemoTwo extends ClassDemo{
}
/*******************************************
Class 對象實例說明( 接口 )
*******************************************/
interface Face{
/*********************************
1.當一個類實現了 某個接口,則要求該類必須實現這個接口的所有方法
2.接口的方法都不能有方法體
3.不能去實例化一個接口
4.接口中可以有屬性,但是必須是常量,並且是public
什麼情況下使用接口
1.定規范
2.定下規范,讓別的程序員來實現,比如:
**********************************/
public function Name();
}
interface Face2 extends Face{
/*******************************
繼承接口
繼承接口時候不用去實現父接口的方法
********************************/
const namevar=20;
}
class Demo implements Face2{
/**********************************
實現接口,可以同時實現多個接口
當一個類去實現了某些接口,則必須把所有接口的方法,都實現
**********************************/
public $Name1=0;
public function Name(){
echo Face2::namevar;
}
}
?>
小結
在類內部訪問靜態成員屬性或者方法,使用 self::(注意不是 $slef),如:
代碼如下 復制代碼slef:: $country
slef:: myCountry()
在子類訪問父類靜態成員屬性或方法,使用 parent::(注意不是 $parent),如:
代碼如下 復制代碼parent:: $country
parent:: myCountry()
外部訪問靜態成員屬性和方法為 類名/子類名:: ,如:
代碼如下 復制代碼Person::$country
Person::myCountry()
Student::$country
但靜態方法也可以通過普通對象的方式訪問。
•類/對象 函數
•__autoload — 嘗試加載未定義的類
•call_user_method_array — 調用一個用戶方法,同時傳遞參數數組(已廢棄)
•call_user_method — 對特定對象調用用戶方法(已廢棄)
•class_alias — 為一個類創建別名
•class_exists — 檢查類是否已定義
•get_called_class — 後期靜態綁定("Late Static Binding")類的名稱
•get_class_methods — 返回由類的方法名組成的數組
•get_class_vars — 返回由類的默認屬性組成的數組
•get_class — 返回對象的類名
•get_declared_classes — 返回由已定義類的名字所組成的數組
•get_declared_interfaces — 返回一個數組包含所有已聲明的接口
•get_declared_traits — 返回所有已定義的 traits 的數組
•get_object_vars — 返回由對象屬性組成的關聯數組
•get_parent_class — 返回對象或類的父類名
•interface_exists — 檢查接口是否已被定義
•is_a — 如果對象屬於該類或該類是此對象的父類則返回 TRUE
•is_subclass_of — 如果此對象是該類的子類,則返回 TRUE
•method_exists — 檢查類的方法是否存在
•property_exists — 檢查對象或類是否具有該屬性
•trait_exists — 檢查指定的 trait 是否存在