PHP 快速導覽 - 介面

介面 (interface) 是一種可定義常數屬性的 abstract 類別 (class) ,主要用為定義程式的共通規格,利用關鍵字 (keyword) interface 宣告,類別用 implements 實作。



舉例如下
<?php
interface Demo {
    const n = 100;
    public function do_something();
}

class Demo2 implements Demo {
    function do_something() {
        return self::n;
    }
}

$d = new Demo2();
echo Demo::n . "\n";
echo $d->do_something();

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:class07.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2013 年 2 月 */
?>


Demo 為實作 Demo2 為介面的類別
class Demo2 implements Demo {


執行結果如下



一個類別可以實作多個介面,此時在 implements 後面以逗號分隔介面識別字 (identifier) 即可,例如
<?php
interface Demo3 {
    public function do_something1();
}

interface Demo4 {
    public function do_something2();
}

class Demo5 implements Demo3, Demo4 {
    function do_something1() {
        return "Demo3";
    }
    
    function do_something2() {
        return "Demo4";
    }
}

$d2 = new Demo5();
echo $d2->do_something1() . "\n";
echo $d2->do_something2();

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:class08.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2013 年 2 月 */
?>


執行結果如下



中英文術語對照
介面interface
類別class
關鍵字keyword
識別字identifier


您可以繼續參考
類別與物件


相關目錄
回 PHP 快速導覽
回 PHP 教材
回首頁


參考資料
http://www.php.net/manual/en/language.oop5.interfaces.php

2 則留言:

Qiger 提到...

想請問若兩個介面提供同樣名稱的函式,再使用上該如何指定呢?謝謝

Kaiching Chang 提到...

PHP 不允許這樣做唷