日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP中抽象类与接口的应用场景

發布時間:2024/4/15 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP中抽象类与接口的应用场景 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<?php /*** ====筆記部分==== 接口的具體語法: 0:以人類為, class Human 是人的草圖 而接口 是零件 可以用多種零件組合出一種新特種來. 1: 如上,接口本身即是抽象的,內部聲明的方法 默認也是抽象的. 不用加 abstract 2: 一個類可以一次性實現多個接口. 語法用 implements 實現 (把我這幾個功能實現了) class ClassName implements interface1,interface2,interface3 { } 然后再把接口的功能給實現. 3: 接口也可以繼承, 用extends 4:接口是一堆方法的說明,不能加屬性 5:接口就是供組裝成類用的,封閉起來沒有意義,因此方法只能是public ***/ interface animal { protected function eat(); } interface monkey extends animal { public function run(); public function cry(); } interface wisdom { public function think(); } interface bird extends animal{ public function fly(); } /* // 下面有誤,monkey繼承的aniaml接口,因此必須要把eat()實現 class Human implements monkey,wisdom { public function run() { echo '走'; } public function cry() { echo '哭'; } public function think() { echo '思考'; } } */ class Human implements monkey,wisdom { public function eat() { echo '吃'; } public function run() { echo '走'; } public function cry() { echo '哭'; } public function think() { echo '思考'; } } ?> <?php //04.php /*** ====筆記部分==== 面向對象的一個觀點: 做的越多,越容易犯錯 抽象類{就定義類模板}--具體子類實現{china,japan,english} 接口: ***/ // 抽象的數據庫類 /* 創業做網站 到底用什么數據庫? mysql, oracle,sqlserver,postgresql? 這樣:先開發網站,運行再說. 先弄個mysql開發著,正式上線了再數據庫也不遲 引來問題: 換數據庫,會不會以前的代碼又得重寫? 答:不必,用抽象類 開發者,開發時,就以db抽象類來開發. */ abstract class db { public abstract function connect($h,$u,$p); public abstract function query($sql); public abstract function close(); } /* // 下面這個代碼有誤 // 因為子類實現時, connect和抽象類的connect參數不一致 class mysql extends db { public function connect($h,$h) { return true; } public function query($sql,$conn) { } public function close() { } } */ /* 下面這個mysql類,嚴格實現了db抽象類 試想: 不管上線時,真正用什么數據庫 我只需要再寫一份如下類 class oracle extends db { } class mssql extends db { } class postsql extends db { } 業務邏輯層不用改? 為什么不用改? 因為都實現的db抽象類. 我開發時,調用方法不清楚的地方,我就可以參考db抽象類. 反正子類都是嚴格實現的抽象類. */ class mysql extends db { public function connect($h,$h,$u) { return true; } public function query($sql) { } public function close() { } } /* 接口 就更加抽象了 比如一個社交網站, 關于用戶的處理是核心應用. 登陸 退出 寫信 看信 招呼 更換心情 吃飯 罵人 搗亂 示愛 撩騷 這么多的方法,都是用戶的方法, 自然可以寫一個user類,全包裝起來 但是,分析用戶一次性使不了這么方法 用戶信息類:{登陸,寫信,看信,招呼,更換心情,退出} 用戶娛樂類:{登陸,罵人,搗亂,示愛,撩騷,退出} 開發網站前,分析出來這么多方法, 但是,不能都裝在一個類里, 分成了2個類,甚至更多. 作用應用邏輯的開發,這么多的類,這么多的方法,都暈了. */ interface UserBase { public function login($u,$p); public function logout(); } interface UserMsg { public function wirteMsg($to,$title,$content); public function readMsg($from,$title); } interface UserFun { public function spit($to); public function showLove($to); } /* 作為調用者, 我不需要了解你的用戶信息類,用戶娛樂類, 我就可以知道如何調用這兩個類 因為: 這兩個類 都要實現 上述接口. 通過這個接口,就可以規范開發. */ /* 下面這個類,和接口聲明的參數不一樣,就報錯, 這樣,接口強制統一了類的功能 不管你有幾個類,一個類中有幾個方法 我只知道,方法都是實現的接口的方法. */ class User implements UserBase { public function login($u) { } } ?>

  轉:https://blog.csdn.net/hanliuxinming/article/details/20879965

  • <?php???
  • /***??
  • ====筆記部分====??
  • 接口的具體語法:??
  • 0:以人類為,?class?Human?是人的草圖??
  • 而接口?是零件??
  • 可以用多種零件組合出一種新特種來.??
  • 1:?如上,接口本身即是抽象的,內部聲明的方法?默認也是抽象的.??
  • 不用加?abstract??
  • 2:?一個類可以一次性實現多個接口.??
  • 語法用?implements?實現?(把我這幾個功能實現了)??
  • class?ClassName?implements?interface1,interface2,interface3?{??
  • }??
  • 然后再把接口的功能給實現.??
  • 3:?接口也可以繼承,?用extends??
  • 4:接口是一堆方法的說明,不能加屬性??
  • 5:接口就是供組裝成類用的,封閉起來沒有意義,因此方法只能是public??
  • ***/???
  • interface?animal?{???
  • ????protected?function?eat();???
  • }???
  • interface?monkey?extends?animal?{???
  • ????public?function?run();???
  • ????public?function?cry();???
  • }???
  • interface?wisdom?{???
  • ????public?function?think();???
  • }???
  • interface?bird?extends?animal{???
  • ????public?function?fly();???
  • }???
  • /*??
  • //?下面有誤,monkey繼承的aniaml接口,因此必須要把eat()實現??
  • class?Human?implements?monkey,wisdom?{??
  • ????public?function?run()?{??
  • ????????echo?'走';??
  • ????}??
  • ????public?function?cry()?{??
  • ????????echo?'哭';??
  • ????}??
  • ????public?function?think()?{??
  • ????????echo?'思考';??
  • ????}??
  • }??
  • */???
  • class?Human?implements?monkey,wisdom?{???
  • ????public?function?eat()?{???
  • ????????echo?'吃';???
  • ????}???
  • ????public?function?run()?{???
  • ????????echo?'走';???
  • ????}???
  • ????public?function?cry()?{???
  • ????????echo?'哭';???
  • ????}???
  • ????public?function?think()?{???
  • ????????echo?'思考';???
  • ????}???
  • }???
  • ?>???
  • <?php???
  • //04.php???
  • /***??
  • ====筆記部分====??
  • 面向對象的一個觀點:??
  • 做的越多,越容易犯錯??
  • 抽象類{就定義類模板}--具體子類實現{china,japan,english}??
  • 接口:??
  • ***/???
  • //?抽象的數據庫類???
  • /*??
  • 創業做網站??
  • 到底用什么數據庫???mysql,?oracle,sqlserver,postgresql???
  • 這樣:先開發網站,運行再說.??
  • 先弄個mysql開發著,正式上線了再數據庫也不遲??
  • 引來問題:??
  • 換數據庫,會不會以前的代碼又得重寫???
  • 答:不必,用抽象類??
  • 開發者,開發時,就以db抽象類來開發.??
  • */???
  • abstract?class?db?{???
  • ????public?abstract?function?connect($h,$u,$p);???
  • ????public?abstract?function?query($sql);???
  • ????public?abstract?function?close();???
  • }???
  • /*???
  • //?下面這個代碼有誤??
  • //?因為子類實現時,?connect和抽象類的connect參數不一致??
  • class?mysql?extends?db?{??
  • ????public?function?connect($h,$h)?{??
  • ????????return?true;??
  • ????}??
  • ????public?function?query($sql,$conn)?{??
  • ????}??
  • ????public?function?close()?{??
  • ????}??
  • }??
  • */???
  • /*??
  • 下面這個mysql類,嚴格實現了db抽象類??
  • 試想:?不管上線時,真正用什么數據庫??
  • 我只需要再寫一份如下類??
  • class?oracle?extends?db?{??
  • }??
  • class?mssql?extends?db?{??
  • }??
  • class?postsql?extends?db?{??
  • }??
  • 業務邏輯層不用改???
  • 為什么不用改???
  • 因為都實現的db抽象類.??
  • 我開發時,調用方法不清楚的地方,我就可以參考db抽象類.??
  • 反正子類都是嚴格實現的抽象類.??
  • */???
  • class?mysql?extends?db?{???
  • ????public?function?connect($h,$h,$u)?{???
  • ????????return?true;???
  • ????}???
  • ????public?function?query($sql)?{???
  • ????}???
  • ????public?function?close()?{???
  • ????}???
  • }???
  • /*??
  • 接口?就更加抽象了??
  • 比如一個社交網站,??
  • 關于用戶的處理是核心應用.??
  • 登陸??
  • 退出??
  • 寫信??
  • 看信??
  • 招呼??
  • 更換心情??
  • 吃飯??
  • 罵人??
  • 搗亂??
  • 示愛??
  • 撩騷??
  • 這么多的方法,都是用戶的方法,??
  • 自然可以寫一個user類,全包裝起來??
  • 但是,分析用戶一次性使不了這么方法??
  • 用戶信息類:{登陸,寫信,看信,招呼,更換心情,退出}??
  • 用戶娛樂類:{登陸,罵人,搗亂,示愛,撩騷,退出}??
  • 開發網站前,分析出來這么多方法,??
  • 但是,不能都裝在一個類里,??
  • 分成了2個類,甚至更多.??
  • 作用應用邏輯的開發,這么多的類,這么多的方法,都暈了.??
  • */???
  • interface?UserBase?{???
  • ????public?function?login($u,$p);???
  • ????public?function?logout();???
  • }???
  • interface?UserMsg?{???
  • ????public?function?wirteMsg($to,$title,$content);???
  • ????public?function?readMsg($from,$title);???
  • }???
  • interface?UserFun?{???
  • ????public?function?spit($to);???
  • ????public?function?showLove($to);???
  • }???
  • /*??
  • 作為調用者,?我不需要了解你的用戶信息類,用戶娛樂類,??
  • 我就可以知道如何調用這兩個類??
  • 因為:?這兩個類?都要實現?上述接口.??
  • 通過這個接口,就可以規范開發.??
  • */???
  • /*??
  • 下面這個類,和接口聲明的參數不一樣,就報錯,??
  • 這樣,接口強制統一了類的功能??
  • 不管你有幾個類,一個類中有幾個方法??
  • 我只知道,方法都是實現的接口的方法.??
  • */???
  • class?User?implements?UserBase?{???
  • ????public?function?login($u)?{???
  • ????}???
  • }???
  • ?>??
  • 轉載于:https://www.cnblogs.com/jimz/p/9375261.html

    總結

    以上是生活随笔為你收集整理的PHP中抽象类与接口的应用场景的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。