国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何優(yōu)雅的使用接口

張金寶 / 2210人閱讀

摘要:嗯,剛過完,我們不在是寶寶了,來(lái)吧,擼一篇接口的文章在編程的過程中我們應(yīng)該學(xué)會(huì)如何使用接口來(lái)給變我們的生活,極大的提升自我能力。可是這么做有什么用呢這么做的好處就是,我們可以分開定義獲取穩(wěn)定的類,而且能使用十分不同的方法。

嗯,6.1剛過完,我們不在是寶寶了,來(lái)吧,擼一篇接口的文章(interface).

在編程的過程中我們應(yīng)該學(xué)會(huì)如何使用接口來(lái)給變我們的生活,極大的提升自我能力。
接口不是新特性,但是非常重要,下面我們來(lái)擼個(gè)接口的小例子。

虛構(gòu)一個(gè)DocumentStore的類,這個(gè)類負(fù)責(zé)從不同的資源收集文本。可以從遠(yuǎn)程url讀取html,也可以讀取資源,也可以收集終端命令輸出。

定義DocumentStore類

class DocumentStore{
    protected $data = [];
    
    public function addDocument(Documenttable $document){
        $key = $document->getId();
        $value = $document->getContent();
        $this->data[key] = $value;        
    }
    
    public function getDocuments(){
        return $this->data;
    }
    
}

既然addDocument()方法的參數(shù)只能是Documenttable的類的實(shí)例,這樣定義DocumentStore的類怎么行呢? 其實(shí)Documenttable不是類,是接口;

定義Documenttable

interface Documenttable{
    public function getId();
    public function getContent(); 
   
}

這個(gè)接口定義表名,實(shí)現(xiàn)Documenttable接口的任何對(duì)象都必須提供一個(gè)公開的getId()方法和一個(gè)公開的getContent()方法。

可是這么做有什么用呢?這么做的好處就是,我們可以分開定義獲取穩(wěn)定的類,而且能使用十分不同的方法。下面是一種實(shí)現(xiàn)方式,這種方式使用curl從遠(yuǎn)程url獲取html。

定義HtmlDocument類

class HtmlDocument implements Documenttable{

    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);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,3);
        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
        curl_setopt($ch,CURLOPT_MAXREDIRS,3);
        curl_close($ch);
        return $thml;
    }
}

下面一個(gè)方法是獲取流資源。

class StreamDocument implements Documenttable{
    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è)類是獲取終端命令行的執(zhí)行結(jié)果。

class CommandOutDocument implements Documenttable{
    protected $command;
    public function __construct($command)
    {
        $this->command=$command;
    }
    
    public function getId(){
        return $this->command;
    }

    public function getContent(){
        return shell_exec($this->command);
    }

}

下面我們來(lái)演示一下借助上面的三個(gè)類來(lái)實(shí)現(xiàn)DocumentStore類。

$documentStore = new DocumentStore();

//添加html文檔
$htmlDoc = new HtmlDocument("https:// www.i360.me");

$documentStore->addDocument($htmlDoc);

//添加流文檔

$streamDOC = new StreamDocument(fopen("stream.txt","rb"));

$documentStore->addDocument($streamDOC);

//添加終端命令文檔

$cmdDoc = new CommandOutDocument("cat /etc/hosts");

$documentStore->addDocument($command);

print_r($documentStore->getDocuments());die;

這里HtmlDocument,StreamDocument,CommandOutDocument這三個(gè)類沒有任何共同點(diǎn),只是實(shí)現(xiàn)了同一個(gè)接口。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/23060.html

相關(guān)文章

  • 如何優(yōu)雅實(shí)現(xiàn)多個(gè)接口并發(fā)?且監(jiān)聽最終結(jié)果

    摘要:相信大家工作中調(diào)用接口的情況很常見,有時(shí)候會(huì)有這樣的需求進(jìn)入頁(yè)面需要多個(gè)接口調(diào)用結(jié)束后,才能讓用戶進(jìn)行操作而這幾個(gè)接口本身并沒有先后順序的要求。最終判斷所有變量值都為。 相信大家工作中調(diào)用接口的情況很常見,有時(shí)候會(huì)有這樣的需求:進(jìn)入頁(yè)面需要多個(gè)接口調(diào)用結(jié)束后,才能讓用戶進(jìn)行操作!而這幾個(gè)接口本身并沒有先后順序的要求。你會(huì)怎么做? 1、儲(chǔ)存變量方法 因?yàn)榻涌谡{(diào)用是異步行為,所以我們可以在...

    shiweifu 評(píng)論0 收藏0
  • 分布式之API接口返回格式如何優(yōu)雅設(shè)計(jì)?

    摘要:區(qū)間表示參數(shù)錯(cuò)誤區(qū)間表示用戶錯(cuò)誤區(qū)間表示接口異常這樣前端開發(fā)人員在得到返回值后,根據(jù)狀態(tài)碼就可以知道,大概什么錯(cuò)誤,再根據(jù)相關(guān)的信息描述,可以快速定位。享學(xué)課堂特邀作者:老顧前言在移動(dòng)互聯(lián)網(wǎng),分布式、微服務(wù)盛行的今天,現(xiàn)在項(xiàng)目絕大部分都采用的微服務(wù)框架,前后端分離方式,(題外話:前后端的工作職責(zé)越來(lái)越明確,現(xiàn)在的前端都稱之為大前端,技術(shù)棧以及生態(tài)圈都已經(jīng)非常成熟;以前后端人員瞧不起前端人員,...

    phpmatt 評(píng)論0 收藏0
  • Spring Cloud中如何優(yōu)雅使用Feign調(diào)用接口

    摘要:對(duì)進(jìn)行了封裝,使其支持標(biāo)準(zhǔn)注解和。可以與和組合使用以支持負(fù)載均衡。中使用當(dāng)我們搭建好注冊(cè)中心之后,就是需要將自己的服務(wù)注冊(cè)到中,然后別的服務(wù)可以直接調(diào)用。 JAVA 項(xiàng)目中接口調(diào)用怎么做 ? Httpclient Okhttp Httpurlconnection RestTemplate 上面是最常見的幾種用法,我們今天要介紹的用法比上面的更簡(jiǎn)單,方便,它就是 Feign Feig...

    ChanceWong 評(píng)論0 收藏0
  • 如何在MyBatis中優(yōu)雅使用枚舉

    摘要:如何解決呢在中我們可以使用方式來(lái)干預(yù)的創(chuàng)建過程,來(lái)完成轉(zhuǎn)換器的指定。再也不用寫的配置文件了結(jié)束了以上就是我對(duì)如何在中優(yōu)雅的使用枚舉的探索。 問題 在編碼過程中,經(jīng)常會(huì)遇到用某個(gè)數(shù)值來(lái)表示某種狀態(tài)、類型或者階段的情況,比如有這樣一個(gè)枚舉: public enum ComputerState { OPEN(10), //開啟 CLOSE(11), ...

    clasnake 評(píng)論0 收藏0
  • 如何優(yōu)雅設(shè)計(jì)PHP異常

    摘要:現(xiàn)在我就用框架來(lái)進(jìn)行實(shí)戰(zhàn)下在實(shí)際業(yè)務(wù)中是如何優(yōu)雅的使用異常的場(chǎng)景描述選擇一個(gè)比較簡(jiǎn)單的業(yè)務(wù)場(chǎng)景,以登錄模塊為例,用戶在移動(dòng)端進(jìn)行登錄時(shí),需要進(jìn)行登錄,注冊(cè),忘記密碼,獲取手機(jī)驗(yàn)證碼等接口。 前言 剛開始接觸PHP的時(shí)候沒有意識(shí)到異常的重要性,有時(shí)候出問題很難精確的找到問題點(diǎn),正確的處理異常也是一門學(xué)問 異常的類別 PHP7異常做了很多變動(dòng),異常類 Exception 和錯(cuò)誤類 Erro...

    wing324 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

張金寶

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<