這篇文章主要以代碼為主,主要作用是通過執行個體理解PHP物件導向的介面(interface)和備忘。
定義介面使用interface關鍵字,不在使用class關鍵字;
介面中可以定義常量,不可以定義成員屬性和成員方法,這一點和抽象類別不同(抽象類別可以定義)
介面中的方法全是抽象方法,但是不用abstract關鍵字修飾,沒有實體內容
interface usb{
function connect();//連結USB
function quit();//退出USB
interface chapai{
const DIANYA = '220v';
function charu();//插入
function bachu();//拔出
}
以三個不同的電子裝置為例:不同的裝置實現USB介面的方法不同,進而實現的動作不同
數位相機:插在電腦上彈出圖片瀏覽器 U盾:裝驅動,開啟瀏覽器 手機:充電
class shouji implements usb,chapai{ //一個類可以實現多個介面
function connetc(){
echo '手機充電,顯示手機內容';
}
function quit(){
echo "手機停止充電,退出";
}
function charu(){ //實現插排介面的方法
echo "手機通過".self::DIANYA."電壓充電,插排充電";
}
function bachu(){
echo "手機斷電拔出,離開".self::DIANYA."電壓插排";
}
}
class xiangji implements usb{
function connetc(){
echo "相機插在USB上,顯示圖片";
}
function quit(){
echo "相機拔出";
}
}
class pc{
function usbConnect($usb){ //傳入不同的電子裝置,得到裝置的對象進而就會調用這個電子裝置的連結方法
$obj = new $usb();
$obj->connect();
}
function usbQuit($usb){ //同上,傳入不同的裝置調用相應裝置的退出方法
$obj = new $usb();
$obj->quit();
}
}
$apple = new pc();
$apple->usbConnetc('shouji'); //new出一個電腦的對象,傳入手機就會調用手機串連USB的方法
通過上面的電腦類可以理解為:
手機通過USB串連上電腦,機會調用手機的方法;相機通過USB串連上電腦,就會調用相機的方法