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

接口 – PHP面向?qū)ο缶幊蹋∣OP)

PHP中關(guān)于接口的定義和使用方法

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

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

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

什么時候使用接口?

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

接口 – PHP面向?qū)ο缶幊蹋∣OP)

常量

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

接口的實現(xiàn)

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

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

<?php

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


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

注意:

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

面向接口開發(fā)

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

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

可擴充(繼承?)的接口

<?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)
    {
    }
}

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

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

接口 – PHP面向?qū)ο缶幊蹋∣OP)

擴展多個接口

<?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;
}

// 抽象類可能僅實現(xiàn)了接口的一部分。
// 擴展該抽象類時必須實現(xiàn)剩余部分。
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;
    }
}
?>

同時使用擴展和實現(xiàn)

<?php

class One
{
    /* ... */
}

interface Usable
{
    /* ... */
}

interface Updatable
{
    /* ... */
}

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

參考文章

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

    9000px;">

      中文字幕在线1| 亚洲第一色av| 在线观看亚洲国产| 极品久久久久久久| 91精品国产综合久| 无码视频一区二区三区| 国产精品毛片一区二区在线看舒淇 | 久久久久免费看| 中文字幕在线观看二区| 日本中文在线播放| 精品亚洲视频在线| 懂色av.com| 亚洲综合婷婷久久| 亚洲国产午夜精品| 亚洲av无码一区二区三区网址| 久久人妻免费视频| 国产精品福利电影| 亚洲欧美日韩一级| 中文字幕乱码在线观看| 亚洲 另类 春色 国产| 日本欧美www| 日本激情视频一区二区三区| 狠狠人妻久久久久久| 国产激情视频在线播放| wwwww在线观看| 波多野结衣av无码| 一级黄色性视频| 中文字幕中文在线| 亚洲免费不卡视频| 一级黄色片网址| www.日韩在线观看| 亚洲精品在线视频播放| 无码精品人妻一区二区三区影院| 日韩免费黄色片| 日韩va亚洲va欧美va清高| 全国男人的天堂网| 日韩综合在线观看| 天堂中文在线资源| 一区二区在线免费观看视频| 性xxxxbbbb| 亚洲欧美激情一区二区三区| 中文字幕人妻一区二区三区| 中文字幕永久在线观看| 91精品人妻一区二区三区蜜桃2| www亚洲色图| 久久9999久久免费精品国产| 欧美成人黄色网| 午夜视频你懂的| 一本岛在线视频| 国产午夜久久久| 日本黄色免费视频| 亚洲无人区码一码二码三码| 国产 日韩 欧美 综合| 久久久精品三级| 天天躁日日躁狠狠躁av| 一二三区中文字幕| 亚洲精品一区二区口爆| 最新版天堂资源在线| av成人免费网站| 久视频在线观看| 伊人久久久久久久久久久久久久| 99草在线视频| 欧美特黄aaa| av中文字幕免费在线观看| 精品成人久久久| 真实国产乱子伦对白在线| 国产高潮流白浆| 色www免费视频| 国产精品爽爽久久久久久| 日韩精品视频播放| 999久久久久久| 欧美亚洲天堂网| 国产 欧美 在线| 日韩欧美中文字幕一区二区| www.国产com| 五月激情四射婷婷| 黄色a级三级三级三级| 亚洲精品人妻无码| 欧美 日韩 国产 精品 | 亚洲精品福利网站| 欧美日韩国产黄色| 国产乱叫456| 色综合免费视频| 国产精品嫩草影院桃色| 亚洲精品乱码久久久久久蜜桃欧美 | 国产高潮视频在线观看| 依依成人综合网| 青青草久久伊人| 国产精品一级视频| 亚洲一区二区天堂| 亚洲 欧美 精品| 欧美做受xxxxxⅹ性视频| 国产免费不卡av| 亚洲一区二区三区观看| 在线观看日本网站| 日韩av无码中文字幕| 久久久男人的天堂| 国产精品区在线| 丰满人妻一区二区三区免费视频棣 | 91小视频在线播放| 亚洲xxxx天美| 天天操天天操天天操天天操天天操| 国产一级特黄aaa大片| 午夜国产福利在线观看| 日本妇乱大交xxxxx| 精品人妻一区二区三区蜜桃视频| 国产精久久一区二区三区| 一级黄色高清视频| 91亚洲视频在线观看| 亚洲色图 校园春色| 亚洲中文字幕一区二区| 亚洲国产精品二区| 亚洲综合久久网| 亚洲这里只有精品| av直播在线观看| 国产精品成人在线视频| 国产精品20p| 久久精品国产亚洲av无码娇色| 国产午夜免费福利| 精品成人av一区二区三区| 国产一级生活片| 久久久久99精品成人| 欧美日韩大片在线观看| 精品久久久免费视频| 国产一级片自拍| 欧美激情一区二区三区p站| 欧美大片免费播放器| 婷婷免费在线观看| 中文字幕在线国产| a级片免费观看| 久久99久久久| 天天操天天干天天操| 中文字幕av播放| 综合五月激情网| 国产激情av在线| 欧美一区二区在线观看视频| 婷婷激情四射五月天| 亚洲熟妇av乱码在线观看| 懂色av蜜臀av粉嫩av喷吹| 精品无码一区二区三区蜜臀| 日韩黄色片网站| 亚洲视频久久久| 精品人妻aV中文字幕乱码色欲| 任你躁av一区二区三区| 中文字幕在线日本| 国产性生活毛片| 午夜精品久久久久久久爽| 一级黄色a毛片| 欧美黄色aaa| 69视频免费在线观看| 久久久久久久久久久影院| 亚洲av熟女高潮一区二区| 国产波霸爆乳一区二区| 秋霞精品一区二区三区| 91久久久久国产一区二区| 久久久精品高清| 一二三区在线播放| 免费麻豆国产一区二区三区四区| 亚洲高清无码久久| 麻豆一区二区三区视频| 亚洲视频一二三四| 欧美午夜精品理论片| а中文在线天堂| 亚洲av成人精品一区二区三区| 波多野结衣爱爱视频| 久久免费在线观看视频| 91theporn国产在线观看| 日韩欧美视频免费观看| 国产精品一区二区免费视频| 色综合五月婷婷| 国产精品自偷自拍| 亚洲一区在线不卡| 日韩欧美国产片| 精品一级少妇久久久久久久| 91狠狠综合久久久久久| 天天干,夜夜操| 欧美日韩精品亚洲精品| 国产精品探花视频| 2017亚洲天堂| 中文字幕天堂av| 五月天综合激情网| 欧美大片久久久| 九九热99视频| 国产一区二区三区在线视频观看| jizz中文字幕| 91麻豆国产在线| 亚洲视频在线观看免费视频| 午夜av中文字幕| 天天色天天操天天射| 欧美成人精品一区二区综合免费| 国产熟妇一区二区三区四区| www.亚洲黄色| 波多野结衣xxxx| 动漫精品一区一码二码三码四码| 一本色道综合久久欧美日韩精品| 伊人国产在线视频| 在线看成人av| 亚洲毛片一区二区三区| 亚洲精品免费在线观看视频 | 精品无码一区二区三区蜜臀|