欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

PHP面向?qū)ο笾薪涌诘亩x和作用以及實現(xiàn)

(一)、PHP中接口的定義(What)

定義:接口就是把不同類的 共同行為進行了定義,然后在不同的類里面實現(xiàn)不同的功能

從策劃到設計制作,每一步都追求做到細膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都網(wǎng)站制作、網(wǎng)站設計、網(wǎng)站策劃、網(wǎng)頁設計、域名注冊雅安服務器托管、網(wǎng)絡營銷、VI設計、 網(wǎng)站改版、漏洞修補等服務。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進步。

   或者我們可以理解成它是對事物的一種統(tǒng)一規(guī)范,它規(guī)定了某個事物必須有哪些行為,比如人這個接口,它就規(guī)定了人必須要具備的一些方法,比如吃、喝、拉、撒、走路、說話、眨眼睛、睡覺、思考等,缺少任何一個行為都不是一個正常的人了

(二)、PHP中接口的作用(Why)

作用:

1、規(guī)范代碼:定義接口有利于代碼的規(guī)范:特別是對于一些大型項目而言,有了統(tǒng)一的接口后,一方面開發(fā)人員能有一個清晰的認識,一看接口就知道他們具體要實現(xiàn)哪些業(yè)務;同時也能防止由于開發(fā)人員隨意命名而導致的命名不清晰和代碼混亂,影響開發(fā)效率。

  2、提高的代碼的可維護性:比如你要做一個分銷商城程序,其中里面有一個分銷類,主要負責分銷功能,剛開始的時候你可能會把你剛開始想到的一些分銷功能都封裝到這個分銷類里面??墒请S著時間的推移,你之后可能會發(fā)現(xiàn)現(xiàn)有的類已經(jīng)不能夠滿足你的新的需求,然后你就需要重新設計這個類,但是最壞的情況是你會發(fā)現(xiàn)此刻這個類好像根本就沒什么用了,但是代碼的其他地方有可能還會引用這個類,如果完全去修改,會導致非常麻煩。但是如果一開始你把它定義成一個接口,把分銷的一些主要功能放在接口里,然后再另外定義一個分銷類時去具體的實現(xiàn)這些接口,然后你只需要用這個接口去引用已經(jīng)實現(xiàn)這個接口的相關(guān)的類就可以了,就算以后要換的話只不過是引用另一個類而已,這樣就可以提高代碼的可維護性和可拓展性。

  3、讓代碼更具備高內(nèi)聚,低耦合的原則

(三)、PHP中接口的使用場景(Where)

場景:結(jié)合它的作用,使用場景基本上如下

1、如果為了保證一個類更具規(guī)范性,我們可以為這個類定義一個接口,那么所有繼承這個接口的所有類,都必須要實現(xiàn)接口里定義的方法

2、如果希望提高代碼的可維護性,可重用性和可擴展性,我們也可以考慮它,特別是在參與開發(fā)大型項目的時候,一定要先考慮好,哪些接口需要先定義好,這樣就等同于先把規(guī)范確定好了,規(guī)范確定好了,分工合作的時候,效率才會提升

(四)、了解PHP中接口的具體實現(xiàn)(How)

總結(jié):

1、接口的定義 interface 接口名稱{  }

2、接口里面的方法 是沒有{},也就是說里面的方法是沒有具體的實現(xiàn)部分

3、類實現(xiàn)接口的定義 通過關(guān)鍵字implements,比如 class A implements 接口{}

4、類一旦要實現(xiàn)某個接口,就必須要實現(xiàn)接口定義好的所有方法

5、接口不能被實例化

6、通過instanceof 來判斷某個類的實例是不是實現(xiàn)了一個接口,比如A對象實例 instanceof B接口

如果返回true,就表示A對象實例對應的類 是實現(xiàn)了B接口

7、通過extends可以讓一個接口 繼承 另外一個接口

8、當一個類要實現(xiàn)一個子接口時,它不僅要實現(xiàn)子接口里面的方法,同時也要實現(xiàn)父接口的所有方法

每個總結(jié)都是通過實踐得來的,下面我們一一來通過具體的代碼來演示上面的總結(jié)

(五)、具體代碼

1、案例一

實踐目標:

1、接口的定義 interface 接口名稱{  }

2、接口里面的方法 是沒有{},也就是說里面的方法是沒有具體的實現(xiàn)部分

<?php
//接口定義
interface Action{
    public function eat();
    public function walk();
    public function sleep();
}
?>

運行結(jié)果:是空白的說明沒有報錯

2、案例二

實踐目標:

1、類要實現(xiàn)一個接口的定義 通過關(guān)鍵字implements,比如 class A implements 接口{}

2、類一旦要實現(xiàn)某個接口,就必須要實現(xiàn)接口定義好的所有方法

<?php
//接口定義
interface Action{
    public function eat();
    public function walk();
    public function sleep();
}
//定義實現(xiàn)接口的類
class Monkey implements Action{
    //一旦要實現(xiàn)一個接口,就必須要實現(xiàn)接口里面的所有方法
    public function eat(){}
    public function walk(){}
    public function sleep(){}
}
$monkey = new Monkey();

?>

沒有實現(xiàn)接口的方法的運行結(jié)果為:

Fatal error: Class Monkey contains 3 abstract methods and must therefore be declared abstract or implement the remaining methods (Action::eat, Action::walk, Action::sleep) in D:\E-class\class-code\classing\index.php on line 11

實現(xiàn)了接口的運行結(jié)果為:

空白說明是正確的

3、案例三

實踐目標:

1、接口不能被實例化

<?php
//接口定義
interface Action{
    public function eat();
    public function walk();
    public function sleep();
}
$action = new Action();

?>

運行結(jié)果為:

Fatal error: Uncaught Error: Cannot instantiate interface Action in D:\E-class\class-code\classing\index.php:9 Stack trace: #0 {main} thrown in D:\E-class\class-code\classing\index.php on line 9

4、案例四

實踐目標:

1、通過instanceof 來判斷某個類的實例是不是實現(xiàn)了一個接口,比如A對象實例 instance of B接口

如果返回true,就表示A對象實例對應的類 是實現(xiàn)了B接口

<?php
//接口定義
interface Action{
    public function eat();
    public function walk();
    public function sleep();
}
//定義實現(xiàn)接口的類
class Monkey implements Action{
    public function eat(){}
    public function walk(){}
    public function sleep(){}
}
$monkey = new Monkey();
print_r( $monkey instanceof Action );
?>

運行結(jié)果為:1

5、案例五

實踐目標:

1、通過extends可以讓一個接口 繼承 另外一個接口

<?php
//接口定義
interface Action{
    public function eat();
    public function walk();
    public function sleep();
}
//接口繼承
interface HigherAction extends Action{
    public function talk();
    public function think();
}

?>

6、案例六

實踐目標:

1、當一個類要實現(xiàn)一個子接口時,它不僅要實現(xiàn)子接口里面的方法,同時也要實現(xiàn)父接口的所有方法

<?php
//接口定義
interface Action{
    public function eat();
    public function walk();
    public function sleep();
}
//接口繼承
interface HigherAction extends Action{
    public function talk();
    public function think();
}
//定義實現(xiàn)子接口的類
class Human implements HigherAction{
    public function eat(){}
    public function talk(){}
    public function walk(){}
    public function sleep(){}
    public function think(){}
}
$human = new Human();

?>

當Human類只實現(xiàn)HigherAction的2個方法的時候,運行結(jié)果為:

Fatal error: Class Human contains 3 abstract methods and must therefore be declared abstract or implement the remaining methods (HigherAction::think, Action::walk, Action::sleep) in D:\E-class\class-code\classing\index.php on line 14

當Human類實現(xiàn)了HigherAction和Action的所有方法的時候,運行結(jié)果為:

空白,說明是正確的

(六)、學以致用

問題:分銷系統(tǒng)想必對很多人來說都不陌生,但是分銷系統(tǒng)也有很多種類,比如常見的不違法有2級分銷,稍微有點違法的就是3級分銷,其實還有更多繁雜的分銷系統(tǒng),但是不管是哪種分銷系統(tǒng),他們都有類似的方法,我們希望把這些方法做成一個接口,然后具體怎么實現(xiàn),就交由2級分銷和3級分銷2個類,怎么做?

思路分析:

1、先想好分銷的公共方法

2、把這些方法封裝到分銷接口中

3、定義2個類,讓這2個類分別去實現(xiàn)這個分銷接口

具體代碼:

<?php
//分銷接口定義
interface Commission{
    //獲取會員的直接上級
    public function getParent($uid);
    //獲取會員的當期級別
    public function getLevel($uid);
    //獲取會員的累計傭金
    public function getTotalCommission($uid);
    //獲取會員當期可提現(xiàn)傭金
    public function getCurrCommission($uid);
    //獲取會員的累計提現(xiàn)傭金
    public function getTotalApplyPrice($uid);
}
//2級分銷
class TwoLevelCommission implements Commission{
    //獲取會員的直接上級
    public function getParent($uid){}
    //獲取會員的當期級別
    public function getLevel($uid){}
    //獲取會員的累計傭金
    public function getTotalCommission($uid){}
    //獲取會員當期可提現(xiàn)傭金
    public function getCurrCommission($uid){}
    //獲取會員的累計提現(xiàn)傭金
    public function getTotalApplyPrice($uid){}
}
//3級分銷
class ThreeLevelCommission implements Commission{
    //獲取會員的直接上級
    public function getParent($uid){}
    //獲取會員的當期級別
    public function getLevel($uid){}
    //獲取會員的累計傭金
    public function getTotalCommission($uid){}
    //獲取會員當期可提現(xiàn)傭金
    public function getCurrCommission($uid){}
    //獲取會員的累計提現(xiàn)傭金
    public function getTotalApplyPrice($uid){}
}
?>

網(wǎng)站名稱:PHP面向?qū)ο笾薪涌诘亩x和作用以及實現(xiàn)
文章起源:http://aaarwkj.com/article6/iiddog.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站導航、微信小程序、定制開發(fā)外貿(mào)建站、網(wǎng)站設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
日韩精品一区二区三区夜色| 男人的天堂免费看看av| 亚洲精品aa片在线观看国产| 亚洲成人乱码一区二区| 亚洲精品乱码国产妇女毛片| 日本中文字幕三级专区| 黑人精品一区二区三区| 亚洲熟妇av一区二区三区| 最新欧美精品一区二区| 亚洲一区二区三区精品在线| 岛国免费av在线观看| 国产亚洲黄片免费在线观看| 日韩美女后入式在线视频| 精品国产av一区二区麻豆| 成年人片免费在线观看| 浮力草草日韩欧美三级| 四虎免费在线视频观看| 国产午夜激情在线播放| 日韩高清不卡在线视频| 中文字幕一区侵犯人妻| 久久热福利视频就在这里| 中文乱幕亚洲无套内射| 蜜臀视频网站在线观看| 亚洲精品在线观看毛片| 亚洲男人的天堂社区av| 一本大道东京热无码AⅤ片| 国产极品嫩模91精品| 乱色视频中文字幕在线着| 亚洲成av人天堂影院| 精品人妻一区二区三区免费视频| 日韩亚洲一区二区免费| 日韩精品一区免费电影| 色哟哟亚洲精品在线视频| 国产偷国产偷亚洲综合av| 中文免费在线观看av| 日本2区3区视频在线观看| 亚洲一区二区三区免费在线视频| 18禁成年大片免费网站| 免费日本高清色噜噜视频| 好吊妞视频这里只有精| 最近日本免费高清完整版|