新聞中心
php接口開(kāi)發(fā)教程
PHP與大多數(shù)面向?qū)ο缶幊陶Z(yǔ)言一樣,不支持多重繼承.也就是說(shuō)每個(gè)類(lèi)只能繼承一個(gè)父類(lèi).為了解決這個(gè)問(wèn)題,PHP引入了接口,接口的思想是指定了一個(gè)實(shí)現(xiàn)了該接口的類(lèi)必須實(shí)現(xiàn)的一系列方法.接口是一種特殊的抽象類(lèi),抽象類(lèi)又是一種特殊的類(lèi),所以接口也是一種特殊的類(lèi),為什么說(shuō)接口是一種特殊的抽象類(lèi)呢?如果一個(gè)抽象類(lèi)里面的所有的方法都是抽象方法,那么我們就換一種聲明方法使用“接口“;也就是說(shuō)接口里面所有的方法必須都是聲明為抽象方法,另外接口里面不能聲明變量(但可聲明常量constant),而且接口里面所有的成員都是public權(quán)限的。所以子類(lèi)在實(shí)現(xiàn)的時(shí)候也一定要使用public權(quán)限實(shí)限。
江門(mén)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!
聲明一個(gè)類(lèi)的時(shí)候我們使用的關(guān)鍵字是”class”,而接口一種特殊的類(lèi),使用的關(guān)鍵字是“interface”;
類(lèi)的定義: class 類(lèi)名{ … } ,接口的聲明:interface 接口名{ …}
代碼
代碼
?php
//定義一個(gè)接口使用interface關(guān)鍵字,“One”為接口名稱(chēng)
interface One
{
//定義一個(gè)常量
const constant = 'constant value';
//定義了一個(gè)抽象方法”fun1”
public function fun1();
//定義了抽象方法”fun2”
public function fun2();
}
?
上例中定義了一個(gè)接口”one”,里面聲明了兩個(gè)抽象方法“fun1”和”fun2”,因?yàn)榻涌诶锩嫠械姆椒ǘ际浅橄蠓椒ǎ栽诼暶鞒橄蠓椒ǖ臅r(shí)候就不用像抽象類(lèi)那樣使用”abstract”這個(gè)關(guān)鍵字了,默認(rèn)的已經(jīng)加上這個(gè)關(guān)鍵字,另外在接口里邊的”public”這個(gè)訪問(wèn)權(quán)限也可以去掉,因?yàn)槟J(rèn)就是public的,因?yàn)榻涌诶锼谐蓡T都要是公有的,所在對(duì)于接口里面的成員我們就不能使用“private”的和”protected”的權(quán)限了,都要用public或是默認(rèn)的。另外在接口里面我們也聲明了一個(gè)常量“constant“, 因?yàn)樵诮涌诶锩娌荒苡米兞砍蓡T,所以我們要使用const這個(gè)關(guān)鍵字聲明。
因?yàn)榻涌谑且环N特殊的抽象類(lèi),里面所有的方法都是抽象方法,所以接口也不能產(chǎn)生實(shí)例對(duì)象; 它也做為一種規(guī)范,所有抽象方法需要子類(lèi)去實(shí)現(xiàn)。
我們可以使用”extends”關(guān)鍵字讓一個(gè)接口去繼承另一個(gè)接口:
?php
//使用”extends”繼承另外一個(gè)接口
interface Two extends One
{
function fun3();
function fun4();
}
?
而我們定義一接口的子類(lèi)去實(shí)現(xiàn)接口中全部抽象方法使用的關(guān)鍵字是”implements”,而不是我們前面所說(shuō)的”extends”;
代碼
?php
//使用“implements”這個(gè)關(guān)鍵字去實(shí)現(xiàn)接口中的抽象方法 接口和類(lèi)之間
class Three implements One
{
function fun1()
{
…
}
function fun2()
{
…
}
}
//實(shí)現(xiàn)了全部方法,我們?nèi)タ梢允褂米宇?lèi)去實(shí)例化對(duì)象了
$three=new Three();
?
我們也可以使用抽象類(lèi),去實(shí)現(xiàn)接口中的部分抽象方法,但要想實(shí)例化對(duì)象,這個(gè)抽象類(lèi)還要有子類(lèi)把它所有的抽象方法都實(shí)現(xiàn)才行;
在前面我們說(shuō)過(guò),PHP是單繼承的,一個(gè)類(lèi)只能有一父類(lèi),但是一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,就相當(dāng)于一個(gè)類(lèi)要遵守多個(gè)規(guī)范,就像我們不僅要遵守國(guó)家的法律,如果是在學(xué)校的話,還要遵守學(xué)校的校規(guī)一樣;
?php
//使用implements實(shí)現(xiàn)多個(gè)接口
class Four implemtns 接口一, 接口二, ….
{
//必須把所有接口中的方法都要實(shí)現(xiàn)才可以實(shí)例化對(duì)象。
}
?
PHP中不僅一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,也可以在繼承一個(gè)類(lèi)的同時(shí)實(shí)現(xiàn)多個(gè)接口, 一定要先繼承類(lèi)再去實(shí)現(xiàn)接口;
?php
//使用extends繼承一個(gè)類(lèi),使用implements實(shí)現(xiàn)多個(gè)接口
class Four extends 類(lèi)名一 implemtns 接口一, 接口二, ….
{
//所有接口中的方法都要實(shí)現(xiàn)才可以實(shí)例化對(duì)象
………
}
?
php中如何調(diào)用接口以及編寫(xiě)接口代碼詳解
可以用curl獲取借樓的信息。
所謂接口,就是提供一個(gè)url,只要你滿足它要求的參數(shù),就能得到你要的數(shù)據(jù)。比如你拿到一個(gè)接口,帶上所需的參數(shù),復(fù)制到地址欄同樣能得到。不過(guò)最好用程序得到。file_get_contents也可以用,不過(guò)有局限性。所以我建議用curl。給你一個(gè)函數(shù),挺好用的。
function request($url,$https=true,$method='GET',$data=null){
$ch = curl_init();//初始化,得到資源
curl_setopt($ch, CURLOPT_URL,$url); //請(qǐng)求數(shù)據(jù)的路徑
curl_setopt($ch, CURLOPT_HEADER,false);//是否輸出頭
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不直接輸出結(jié)果
//curl_setopt ($ch, CURLOPT_SAFE_UPLOAD, 0);//兼容php之后的版本
if($https){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //是否驗(yàn)證主機(jī)
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //是否進(jìn)行證書(shū)驗(yàn)證
}
if($method=='POST'){
curl_setopt($ch, CURLOPT_POST, true); //POST傳輸
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //傳輸數(shù)據(jù)
}
$content_json = curl_exec($ch);
if ($content_json === false) {
return "網(wǎng)絡(luò)請(qǐng)求出錯(cuò): " . curl_error($ch);
}
curl_close($ch);
return $content_json;
}
PHP寫(xiě)數(shù)據(jù)返還接口--追加分
這不難啊, 既然你也有例子了,就再細(xì)化一下,比如在結(jié)果輸出后加個(gè)表示結(jié)束的變量, 或者加個(gè)error數(shù)量的變量,為0則是沒(méi)發(fā)生錯(cuò)誤. 你有什么不明白的?
======
以我做接口的經(jīng)驗(yàn),程序主要有幾部分:
1.接收數(shù)據(jù),驗(yàn)證數(shù)據(jù)合法性
這你已經(jīng)有例子了, 就是用get方法,程序直接接收get的query,而支付寶,銀行那些網(wǎng)關(guān)除了接收這些必要數(shù)據(jù)外,還會(huì)和商戶(hù)約定一個(gè)key,是這字符串, 約定好每次發(fā)送的數(shù)據(jù)通過(guò)某種方式,比如連接的方式和這個(gè)key組成一個(gè)大的字串,再以MD5加密,附上這個(gè)hash給接口,用來(lái)判斷這個(gè)請(qǐng)求的合法性,key是事先約定的,商戶(hù)和接口都知道
2.處理數(shù)據(jù)
這個(gè)沒(méi)什么好說(shuō)的,數(shù)據(jù)入庫(kù),計(jì)算等等
3.返回?cái)?shù)據(jù)
如果是以http協(xié)議的話,就直接輸出header,然后輸出
值名=值+換行符
這樣的數(shù)據(jù)就可以了
銀行接口網(wǎng)關(guān),財(cái)付通,支付寶,域名注冊(cè)接口我都做過(guò),我只能提示到這里,具體要我做就不是200分的問(wèn)題了,這需要時(shí)間調(diào)試
PHP開(kāi)發(fā)APP接口需要注意哪些問(wèn)題
PHP開(kāi)發(fā)APP接口需要注意下面問(wèn)題:
1.制定規(guī)范
開(kāi)發(fā)前一定要定好一個(gè)規(guī)范,比如要定好數(shù)據(jù)返回的通用參數(shù)和格式。關(guān)于數(shù)據(jù)格式,用的比較多的有xml和json,我建議用json,因?yàn)閖son比xml的好處更多。
2.精簡(jiǎn)的返回?cái)?shù)據(jù)
接口數(shù)據(jù)因符合需要什么返回什么的原則,比如要查詢(xún)某個(gè)用戶(hù)的余額和注冊(cè)時(shí)間,網(wǎng)頁(yè)里面的做法可能是select * from user where
uid=1,但是接口一定要select balance,regtime from user where
uid=1。因?yàn)榻涌诜祷財(cái)?shù)據(jù)是要有開(kāi)銷(xiāo)的,要流量的,能少返回?cái)?shù)據(jù)就盡量少返回,這樣可以大大的提高性能。
3.數(shù)據(jù)類(lèi)型要嚴(yán)格
要注意數(shù)據(jù)的類(lèi)型,整數(shù)類(lèi)型的數(shù)據(jù)一定要轉(zhuǎn)為int,因?yàn)閍pp客戶(hù)端開(kāi)發(fā)的java、object-c語(yǔ)言對(duì)數(shù)據(jù)類(lèi)型比較嚴(yán)格,類(lèi)型不對(duì)會(huì)照成app閃退。
4.要寫(xiě)接口文檔
一定要寫(xiě)好接口文檔,并按照模塊寫(xiě),而且還要書(shū)寫(xiě)規(guī)范,最好的格式是:
接口請(qǐng)求地址;請(qǐng)求參數(shù)(包括參數(shù)名、類(lèi)型、是否必填);測(cè)試參數(shù)舉例;返回參數(shù)(參數(shù)名,并注明每個(gè)參數(shù)的含義)。
這樣哪怕以后項(xiàng)目很大,以不會(huì)照成維護(hù)困難的問(wèn)題。
5.保證代碼正確性
要驗(yàn)證保證代碼正確無(wú)誤,而且生成環(huán)境中要屏蔽掉錯(cuò)誤,避免頭部有額外的輸出,照成返回的json等數(shù)據(jù)解析失敗而導(dǎo)致app閃退等。
6.要優(yōu)化代碼的性能
app要求響應(yīng)迅速,這樣才能給用戶(hù)比較好的體驗(yàn)感。所以移動(dòng)接口端在處理業(yè)務(wù)邏輯的時(shí)候,要避免不要執(zhí)行太復(fù)雜的sql語(yǔ)句,或者含有大量的循環(huán),能做成緩存的盡量做緩存,比如將首頁(yè)的熱點(diǎn)模塊信息可以存到redis緩存中。在不考慮網(wǎng)速的情況下,比較理想的接口響應(yīng)時(shí)間應(yīng)該是200毫秒以?xún)?nèi)。
7.不要隨意更改舊接口
app不像網(wǎng)頁(yè),app一旦發(fā)布,有人使用之后,接口就不要亂修改了。以后升級(jí)也是,修改要在保證接口原有結(jié)構(gòu)之上進(jìn)行額外的擴(kuò)展,否則會(huì)導(dǎo)致調(diào)用舊版接口的app出現(xiàn)bug。
8. 注意接口的安全
安全高于一切,必須要保證接口的安全。電話號(hào)碼等敏感信息在傳輸?shù)倪^(guò)程中一定要加密,否則可能會(huì)被別人抓包到。拿取用戶(hù)信息的接口一定要驗(yàn)證權(quán)限,以防止接口被惡意調(diào)用,泄密用戶(hù)信息,甚至篡改信息。
文章名稱(chēng):php數(shù)據(jù)接口經(jīng)驗(yàn) php寫(xiě)接口教程
網(wǎng)頁(yè)鏈接:http://ef60e0e.cn/article/hpshpi.html