摘要:舉個(gè)來說明接口的作用。定義如下在未來的業(yè)務(wù)開發(fā)中,我們不必關(guān)心具體的的獲取場(chǎng)景,只需要確定,這個(gè)實(shí)現(xiàn)了這個(gè)接口,擁有這兩個(gè)方法即可。實(shí)現(xiàn)了業(yè)務(wù)細(xì)節(jié)和整體架構(gòu)抽象的解耦。舉個(gè)例子再舉個(gè)例子再舉個(gè)例子使用方法參考
舉個(gè)Demo來說明接口的作用。
有這么一個(gè)類。
class DocumentStore { protected $data = []; public function addDocument(Documentable $document) { $key = $document->getId(); $value = $document->getContent(); $this->data[$key] = $value; } public function getDocuments() { return $this->data; } }
其中Documentable就是接口。定義如下:
interface Documentable { public function getId(); public function getContent(); }
在未來的業(yè)務(wù)開發(fā)中,我們不必關(guān)心具體的Document的獲取場(chǎng)景,只需要確定,這個(gè)Document實(shí)現(xiàn)了這個(gè)接口,擁有這兩個(gè)方法即可。實(shí)現(xiàn)了業(yè)務(wù)細(xì)節(jié)和整體架構(gòu)抽象的解耦。
舉個(gè)例子:
class HtmlDocument implements Documentable { protected $url; public function __construct($url) { $this->url = $url; } public function getId() { return $this->url; } public function getContent() { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->url); // opt etc $html = curl_exec($ch); curl_close($ch); return $htl; } }
再舉個(gè)例子:
class StreamDocument implements Documentable { protected $resource; protected $buffer; public function __construct($resource, $buffer = 4096) { $this->resource = $resource; $this->buffer = $buffer; } public function getId() { return "resource-" . (int)$this->resource; } public function getContent() { $streamContent = ""; rewind($this->resource); while (feof($this->resource) === false) { $streamContent .= fread($this->resource, $this->buffer); } return $streamContent; } }
再舉個(gè)例子:
class CommandOutputDocument implements Documentable { protected $command; public function __construct($command) { $this->command = $command; } public function getId() { return $this->command; } public function getContent() { return shell_exec($this->command); } }
使用方法:
addDocument($htmlDoc); $streamDoc = new StreamDocument(fopen("stream.txt", "rb")); $streamDoc->addDocument($streamDoc); $cmdDoc = new CommandOutputDocument("cat /etc/hosts"); $documentStore->addDocument($cmdDoc); print_r($documentStore->getDocuments());
參考:
Modern PHP
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/21652.html
摘要:繼上一篇面試常考內(nèi)容之面向?qū)ο蟀l(fā)表后,今天更新,需要的可以直接點(diǎn)擊文字進(jìn)行跳轉(zhuǎn)獲取。析構(gòu)函數(shù),當(dāng)對(duì)象被銷毀時(shí)調(diào)用。 PHP面試專欄正式起更,每周一、三、五更新,提供最好最優(yōu)質(zhì)的PHP面試內(nèi)容。繼上一篇PHP面試常考內(nèi)容之面向?qū)ο螅?)發(fā)表后,今天更新(2),需要(1)的可以直接點(diǎn)擊文字進(jìn)行跳轉(zhuǎn)獲取。整個(gè)面向?qū)ο笪恼碌慕Y(jié)構(gòu)涉及的內(nèi)容模塊有: 一、面向?qū)ο笈c面向過程有什么區(qū)別?二、面向?qū)?..
摘要:如何構(gòu)建一個(gè)自己的框架為什么我們要去構(gòu)建一個(gè)自己的框架可能絕大多數(shù)的人都會(huì)說市面上已經(jīng)那么多的框架了,還造什么輪子。 showImg(https://segmentfault.com/img/bVNg9F?w=500&h=500); 如何構(gòu)建一個(gè)自己的PHP框架 為什么我們要去構(gòu)建一個(gè)自己的PHP框架?可能絕大多數(shù)的人都會(huì)說市面上已經(jīng)那么多的框架了,還造什么輪子?。我的觀點(diǎn)造輪子不是目...
摘要:做為公司的一名技術(shù),每天會(huì)碰到很多新手朋友咨詢有關(guān)短信接口開發(fā)的問題,下面就以語言為例為大家介紹下短信接口如何開發(fā)。閱讀樂信短信接口示例。二主體協(xié)議發(fā)送短信發(fā)送普通短信調(diào)用此方法,可單個(gè)或批量發(fā)送。 做為公司的一名技術(shù),每天會(huì)碰到很多新手朋友咨詢有關(guān)短信接口開發(fā)的問題,下面就以php語言為例為大家介紹下短信接口如何開發(fā)。 一、接口說明 1、提交方式與編碼 http請(qǐng)求都應(yīng)以POST...
kewail接口短信平臺(tái)提供完備狀態(tài)查詢,支持狀態(tài)接口短信api推送詳盡的在線接口文檔,隨時(shí)查閱,不斷更新標(biāo)準(zhǔn)HTTP接口,提供多種語言示例 (PHPJAVAC#NODEPYTHON等)支持多種返回格式 JSON/XML// Works well with php5.3and php5.6.namespace KewailSms;class SmsSenderUtil {functiongetRa...
摘要:如果還不知道如何簽約,請(qǐng)查看支付寶即時(shí)到帳簽約教程完成簽約后,需要把項(xiàng)目導(dǎo)入自己的項(xiàng)目中安裝方法,請(qǐng)參考項(xiàng)目簡(jiǎn)介。跳轉(zhuǎn)支付寶通過上一步返回的是請(qǐng)求支付寶的。本次支付寶的即時(shí)到帳接口到這里就完成了調(diào)用。 payment 項(xiàng)目2.0版本 特別聲明: 以下文檔均針對(duì) payment 2.0 以上版本,并且PHP需要5.5以上(含)。代碼中所有編碼均使用 utf-8 。 通過幾天的時(shí)間,終于...
閱讀 1478·2021-10-14 09:43
閱讀 1442·2021-10-09 09:58
閱讀 1937·2021-09-28 09:42
閱讀 3728·2021-09-26 09:55
閱讀 1752·2021-08-27 16:23
閱讀 2756·2021-08-23 09:46
閱讀 906·2019-08-30 15:55
閱讀 1405·2019-08-30 15:54