久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

接口 - PHP面向對象編程(OOP)

PHP中關于接口的定義和使用方法

使用接口(interface),可以指定某個類必須實現哪些方法,但不需要定義這些方法的具體內容。

接口是通過?interface?關鍵字來定義的,就像定義一個標準的類一樣,但其中定義所有的方法都是空的。

接口中定義的所有方法都必須是public(公有),這是接口的特性。

什么時候使用接口?

  • 因為實現了同一個接口,所以開發者創建的對象雖然源自不同的類,但可能可以交換使用。 常用于多個數據庫的服務訪問、多個支付網關、不同的緩存策略等。 可能不需要任何代碼修改,就能切換不同的實現方式。
  • 能夠讓函數與方法接受一個符合接口的參數,而不需要關心對象如何做、如何實現。 這些接口常常命名成類似?IterableCacheableRenderable, 以便于體現出功能的含義。

PHP中的抽象類與接口有啥區別?

常量

接口中也可以定義常量。接口常量和類常量的使用完全相同, 在 PHP 8.1.0 之前 不能被子類或子接口所覆蓋。

接口的實現

要實現一個接口,使用?implements?操作符。類中必須實現接口中定義的所有方法,否則會報一個致命錯誤。

類可以實現多個接口,用逗號來分隔多個接口的名稱。

<?php

// 聲明一個'iTemplate'接口
interface iTemplate
{
    public function setVariable($name, $var);
    public function getHtml($template);
}


// 實現接口
class Template implements iTemplate
{
    private $vars = array();
  
    public function setVariable($name, $var)
    {
        $this->vars[$name] = $var;
    }
  
    public function getHtml($template)
    {
        foreach($this->vars as $name => $value) {
            $template = str_replace('{' . $name . '}', $value, $template);
        }
 
        return $template;
    }
}

特征:

  1. 可以指定某個類必須實現哪些方法,但不需要定義這些方法的具體內容。
  2. 就像定義一個標準的類一樣,但其中定義所有的方法都是空的。
  3. 接口中定義的所有方法都必須是public(公有),這是接口的特性。
  4. 類中必須實現接口中定義的所有方法,否則會報一個致命錯誤。
  5. 類可以實現多個接口,用逗號來分隔多個接口的名稱。
  6. 類要實現接口,必須使用和接口中所定義的方法完全一致的方式。否則會導致致命錯誤
  7. 接口也可以繼承,可以通過?extends?操作符擴展。讓一個接口繼承另一個接口,即常用的繼承(擴展新抽象方法),無覆蓋的關系
  8. 接口中也可以定義常量。接口常量和類常量的使用完全相同,但是不能被子類或子接口所覆蓋
  9. 接口中的成員屬性,必須是常量(不能有變量)
  10. 可以使用一個類來實現接口中全部方法,也可以使用一個抽象類,來實現接口中的部分方法
  11. 一個類可以在繼承另一個類的同時,使用implements實現一個接口,也可以實現多個接口(一定要先繼承,再實現接口)

注意:

  • 由于接口(interface)和類(class)、trait 共享了命名空間,所以它們不能重名。
  • 接口中的方法,必須全部是抽象方法,所以接口中的抽象方法不需要使用abstract關鍵字,直接用分號結束即可
  • 接口可以定義魔術方法,以便要求類(class)實現這些方法。
  • 雖然沒有禁止,但是強烈建議不要在接口中使用?構造器。 因為這樣在對象實現接口時,會大幅降低靈活性。 此外,也不能強制確保構造器遵守繼承規則,將導致不可預料的行為結果。
  • 類實現接口時,必須以兼容的簽名定義接口中所有方法。
  • 接口加上類型約束,提供了一種很好的方式來確保某個對象包含有某些方法。參見?instanceof?操作符和類型聲明

面向接口開發

接口,實際上也可以看做是一種契約。我們經常會拿電腦主機箱后面的插口來說明。比如USB接口,我們定義了它的大小,里面的線路格式,不管你插進來的是什么,我們都可以連通。而具體的實現則是取決于電腦軟件對插入的硬件的解釋,比如U盤就會去讀取它里面的內容,而鍵盤則會識別為一個外設。

從這里可以看出,接口能夠為我們程序的擴展提供非常強大的支撐。任何面向對象語言中接口都是非常重要的特性。

可擴充(繼承?)的接口

<?php
interface A
{
    public function foo();
}

interface B extends A
{
    public function baz(Baz $baz);
}

// 正確寫法
class C implements B
{
    public function foo()
    {
    }

    public function baz(Baz $baz)
    {
    }
}

// 錯誤寫法會導致一個致命錯誤
class D implements B
{
    public function foo()
    {
    }
    //無法檢查 D::baz(Foo $foo) 和 B::baz(Baz $baz) 之間的兼容性,因為 Baz 類在代碼中不可用

    //未實現接口B的方法
    public function baz(Foo $foo)
    {
    }
}
?>

PHP中的函數和方法之間有什么區別?

擴展多個接口

<?php
interface A
{
    public function foo();
}

interface B
{
    public function bar();
}

interface C extends A, B
{
    public function baz();
}

class D implements C
{
    public function foo()
    {
    }

    public function bar()
    {
    }

    public function baz()
    {
    }
}
?>

使用接口常量

<?php
interface A
{
    const B = 'Interface constant';
}

// 輸出接口常量
echo A::B;

// 錯誤寫法,因為常量不能被覆蓋。接口常量的概念和類常量是一樣的。
class B implements A
{
    const B = 'Class constant';
}

// 輸出: Class constant
// 在 PHP 8.1.0 之前,不能正常運行
// 因為之前還不允許覆蓋類常量。
echo B::B;
?>

抽象(abstract)類的接口使用

<?php
interface A
{
    public function foo(string $s): string;

    public function bar(int $i): int;
}

// 抽象類可能僅實現了接口的一部分。
// 擴展該抽象類時必須實現剩余部分。
abstract class B implements A
{
    public function foo(string $s): string
    {
        return $s . PHP_EOL;
    }
}

class C extends B
{
    public function bar(int $i): int
    {
        return $i * 2;
    }
}
?>

同時使用擴展和實現

<?php

class One
{
    /* ... */
}

interface Usable
{
    /* ... */
}

interface Updatable
{
    /* ... */
}

// 關鍵詞順序至關重要: 'extends' 必須在前面
class Two extends One implements Usable, Updatable
{
    /* ... */
}
?>

參考文章

給TA贊賞
共{{data.count}}人
人已贊賞
??
Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
?
購物車
優惠劵
搜索
久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    9000px;">

      日本强好片久久久久久aaa| 国产精品国产三级国产普通话蜜臀| 在线播放中文字幕一区| 亚洲一区二区五区| 91在线观看一区二区| 国产人伦精品一区二区| 裸体健美xxxx欧美裸体表演| 色呦呦日韩精品| 亚洲精品午夜久久久| 欧美久久久久中文字幕| 久久国产欧美日韩精品| 久久亚洲私人国产精品va媚药| 成人国产精品视频| 五月天视频一区| 欧美成va人片在线观看| 91丝袜国产在线播放| 日韩av在线播放中文字幕| 欧美精品一区二区高清在线观看| 国产成人午夜高潮毛片| 亚洲国产精品一区二区www在线| 欧美日韩一区二区欧美激情| 豆国产96在线|亚洲| 婷婷一区二区三区| 国产拍揄自揄精品视频麻豆| av一区二区三区| 日本伊人色综合网| 国产精品久久久久毛片软件| 日韩欧美中文一区| 99久久99精品久久久久久| 亚洲国产一区二区在线播放| 久久久另类综合| 91色porny蝌蚪| 成人午夜激情视频| 精品一区二区在线免费观看| 一区二区在线观看视频在线观看| 日本一区二区三区视频视频| 欧美日韩情趣电影| 91麻豆国产香蕉久久精品| 国产盗摄一区二区| 国产69精品久久久久毛片| 国产v综合v亚洲欧| 麻豆91在线播放免费| 亚洲欧美激情在线| 国产精品久久久久影院亚瑟| 国产精品福利一区二区| 久久久久国产精品厨房| 久久久久久97三级| 综合在线观看色| 亚洲精品亚洲人成人网在线播放| 伊人色综合久久天天人手人婷| 国产精品久久久久婷婷二区次| 欧美国产日韩在线观看| 国产欧美日韩在线观看| 亚洲欧美一区二区在线观看| 最新中文字幕一区二区三区 | 色综合久久综合中文综合网| 99免费精品在线观看| 欧美性色欧美a在线播放| 色综合天天综合狠狠| 欧美少妇bbb| 国产午夜精品久久久久久久| 亚洲高清免费观看 | 亚洲一区二区视频| 国产成人精品影视| 91麻豆精品国产91久久久久久久久| 欧美变态口味重另类| 中文字幕一区二区三区乱码在线| 日本美女一区二区三区视频| 国产精品一区在线观看乱码 | 蜜桃av一区二区| 亚洲成av人影院在线观看网| 国产精品综合网| 欧美在线一二三| 亚洲美女屁股眼交3| 国产乱国产乱300精品| 欧美tickling网站挠脚心| 青娱乐精品视频在线| 欧美偷拍一区二区| 亚洲国产综合91精品麻豆| 国产成人在线看| 1区2区3区欧美| 91搞黄在线观看| 亚洲午夜私人影院| 欧美一级夜夜爽| 亚洲午夜电影网| 欧美日韩综合色| 首页综合国产亚洲丝袜| 欧美日韩一区 二区 三区 久久精品| 中文字幕精品综合| 成人av电影在线网| 亚洲午夜精品17c| 久久蜜桃香蕉精品一区二区三区| 青青草一区二区三区| 久久久国产精品麻豆| 成人网页在线观看| 亚洲二区在线观看| 精品99久久久久久| 国产麻豆精品一区二区| 欧美一区二区日韩| 免费观看91视频大全| 日韩欧美激情在线| 99re视频精品| 奇米影视在线99精品| 久久女同精品一区二区| 国产超碰在线一区| 亚洲资源中文字幕| 欧美另类变人与禽xxxxx| 久久99国产精品尤物| 国产人久久人人人人爽| 91国产丝袜在线播放| 免费人成网站在线观看欧美高清| 中文字幕视频一区| 欧美色欧美亚洲另类二区| 麻豆精品蜜桃视频网站| 久久久久久久综合日本| 成人动漫一区二区三区| 麻豆国产精品视频| 亚洲精品综合在线| 久久久久久久免费视频了| 99久精品国产| 美腿丝袜亚洲色图| 欧美国产日产图区| 91精品国产91热久久久做人人| 成人av免费观看| 国产一二精品视频| 国产精品一区二区在线看| 美腿丝袜亚洲色图| 首页国产欧美久久| 亚洲bt欧美bt精品777| 日韩理论片中文av| 中文字幕亚洲不卡| 国产精品毛片久久久久久久| 欧美—级在线免费片| 久久婷婷国产综合精品青草| 2020日本不卡一区二区视频| 久久久99免费| 久久精品人人做人人爽人人| 日韩女同互慰一区二区| 久久伊99综合婷婷久久伊| 2023国产精品视频| 国产精品成人免费| 免费观看久久久4p| 成人永久aaa| 欧美午夜电影网| 欧美色涩在线第一页| 精品国产欧美一区二区| 国产午夜精品久久久久久免费视| 国产三级精品在线| 综合网在线视频| 久久99国产精品麻豆| 色狠狠av一区二区三区| 欧美人狂配大交3d怪物一区| 精品va天堂亚洲国产| 国产精品美日韩| 美国毛片一区二区| 色网站国产精品| 久久精品人人做| 日韩精品一级中文字幕精品视频免费观看| 蜜桃视频在线一区| 色综合天天综合给合国产| 91精品午夜视频| 国产日韩视频一区二区三区| 国产精品一区二区久激情瑜伽| 青青草成人在线观看| 成人免费不卡视频| 亚洲制服丝袜av| 亚洲一区二区四区蜜桃| 日韩无一区二区| 黄一区二区三区| 一区二区三区日韩欧美| 91精品国产全国免费观看| 国产在线国偷精品产拍免费yy | 欧美日高清视频| 精品综合久久久久久8888| 久久久噜噜噜久久中文字幕色伊伊| 高清beeg欧美| 麻豆免费看一区二区三区| 亚洲国产精品高清| 91精品国产综合久久久蜜臀图片 | 亚洲电影一区二区三区| 欧美大白屁股肥臀xxxxxx| 91在线丨porny丨国产| 亚洲伊人色欲综合网| 欧美在线视频全部完| 懂色av一区二区三区免费看| 亚洲精品免费播放| 中文字幕一区三区| 中文字幕av一区二区三区高| 精品国产成人系列| 日韩视频在线一区二区| 欧美人成免费网站| 91在线观看地址| av午夜精品一区二区三区| 国产福利精品一区二区| 日韩成人av影视| 亚洲精品国产一区二区三区四区在线| 国产亚洲欧美在线| 国产三级欧美三级日产三级99| 精品国产一区二区三区久久影院| 日韩欧美久久久|