本文目錄一覽:
- 1、什麼是API介面,PHP開發API介面的例子
- 2、php如何開發API介面
- 3、有沒有開發php介面實例?
- 4、用php寫個介面。
- 5、怎麼用PHP開發API供其他客戶端調用?
- 6、php介面開發教程
什麼是API介面,PHP開發API介面的例子
就是php只處理數據,而不直接輸出html
把視圖層都交給js去完成。
比如:
//獲取數據
$id=$_GET[‘id’];
if($id){
//支資料庫取數據
$sql=”select*from table where id='”.$id.”‘”;
$re=…..;
echo json_encode($re);//返回json格式數據給前端處理
}
//修改數據
if($id$_GET[‘edit’]){
////資料庫操作
echo “修改成功”;
}
php如何開發API介面
比如一個自定義函數:function test(){echo 『hello world』;}就可以叫做 api。api 既可以是單個的函數,也可以是封裝在類里的方法,當然它們也是程序代碼。開發一個 api 的流程可以很簡單,也可以很複雜,視具體的編程任務而決定,並沒有特定的規則。比如,你需要為自己建立一個常用的函數庫,命名為 my.lib.php然後把你自己編寫的自定義函數,全部寫在這個文件裡面,那麼,你就擁有了自己的api。開發的時候,只需要引入 my.lib.php,你就可以調用自己的 api 了。這是一個比較簡單的例子。稍微複雜一點的,你可以把函數封裝在類裡面,方便繼承和重用,還可以根據函數名稱做一些程序設計,這個一句話說不清楚,給一個簡單的例子吧:class mylib{function showmy(){echo 『這是我的一個類方法』;}}調用的時候,先要實例化類,然後再調用方法。再複雜一點的就是使用類介面,區別就是介面裡面定義的只是方法原型,而你需要通過具體的類來實現介面中的函數,具體請參考 php 手冊
有沒有開發php介面實例?
你就直接寫個類,然後寫方法,然後查詢對應的數據,返回JSON格式就行,當然這個類的方法能通過瀏覽器訪問,別人調用也是這樣來調用的
用php寫個介面。
PHP 介面:
介面
使用介面(interface),你可以指定某個類必須實現哪些方法,但不需要定義這些方法的具體內容。
我們可以通過interface來定義一個介面,就像定義一個標準的類一樣,但其中定義所有的方法都是空的。
介面中定義的所有方法都必須是public,這是介面的特性。
實現
要實現一個介面,可以使用implements操作符。類中必須實現介面中定義的所有方法,否則 會報一個fatal錯誤。如果要實現多個介面,可以用逗號來分隔多個介面的名稱。
Note:
實現多個介面時,介面中的方法不能有重名。
Note:
介面也可以繼承,通過使用extends操作符。
常量
介面中也可以定義常量。介面常量和類常量的使用完全相同。 它們都是定值,不能被子類或子介面修改。
怎麼用PHP開發API供其他客戶端調用?
一、介面的分類:
1、URL類型的介面
URL
路由帶參數式的介面!這個很好做!只要有過Web開發經驗的人都能完成!這種介面數據不夠隱蔽性,可以直接在瀏覽其中看到,如支付寶的交易請求URL。需
要加一個MD5簽名,和伺服器端的再次向支付寶伺服器發送驗證!雖然soap方式傳遞的數據隱蔽性很好!但為了數據安全,難免也需要進行數據簽名。
2、SOAP類型的介面
無關編程語言、無關平台、擴展性很好,要實現一個SOAP 型的介面,有兩種方式:一種有WSDL文件方式、一中無WSDL文件方式!
對
於熱愛研究型的人來說,使用第一種方式可以讓你清楚的了解PHP是怎麼創建了一個Web
Service!但第一種對於新手來說,創建一個XML格式的WSDL文件,是比較難的,這你的先了解熟悉什麼是XML!學會XML語法!但對於一個急於
解決問題的人來說!沒有這麼多的時間去熟悉!所以這是件煩惱的事!
二、PHP環境設置
先配置下PHP的soap環境支持:
找到php.ini文件
;extension=php_soap.dll
刪除掉”;” ,重啟apache伺服器
為了便於測試,需要關於wsdl緩存
方式1:
配置文件:php.ini 選項 soap.wsdl_cache_enabled 設置為0
方式2:
代碼頭添加:ini_set(‘soap.wsdl_cache_enabled’, “0”); //關閉wsdl緩存
三、有WSDL文件方式創建
在
這裡先介紹標準的webservice。 那麼如何創建wsdl呢?對於PHP來說這確實是件很不容易的事情,有人說用zend
studio創建很方便,這是一種方法。但對於那些不喜歡用zend studio的人來說,會覺得創建一個web service還要安裝zend
studio,太強人所難了。
在這裡介紹一個簡單的方法,到網上下載SoapDiscovery.class.php類,裡面有個公用方法:getWSDL,這個方法末尾是用的 return,那麼,你修改一下這個方法:
//return sprintf(‘%s%s%s%s%s%s’, $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, ‘/definitions’);
//生成wsdl文件,將上面的return注釋
$fso = fopen($this-class_name . “.wsdl” , “w”);
fwrite($fso,
sprintf(‘%s%s%s%s%s%s’, $headerWSDL, $portTypeWSDL, $bindingWSDL,
$serviceWSDL, $messageWSDL, ‘/definitions’));
現在生成wsdl的類有了,SoapDiscovery.class.php(源碼在最末尾)。
再準備一個提供服務的Service.php類文件或者函數就可以創建wsdl了!
php介面開發教程
PHP與大多數面向對象編程語言一樣,不支持多重繼承.也就是說每個類只能繼承一個父類.為了解決這個問題,PHP引入了介面,介面的思想是指定了一個實現了該介面的類必須實現的一系列方法.介面是一種特殊的抽象類,抽象類又是一種特殊的類,所以介面也是一種特殊的類,為什麼說介面是一種特殊的抽象類呢?如果一個抽象類裡面的所有的方法都是抽象方法,那麼我們就換一種聲明方法使用「介面「;也就是說介面裡面所有的方法必須都是聲明為抽象方法,另外介面裡面不能聲明變數(但可聲明常量constant),而且介面裡面所有的成員都是public許可權的。所以子類在實現的時候也一定要使用public許可權實限。
聲明一個類的時候我們使用的關鍵字是」class」,而介面一種特殊的類,使用的關鍵字是「interface」;
類的定義: class 類名{ … } ,介面的聲明:interface 介面名{ …}
代碼
代碼
?php
//定義一個介面使用interface關鍵字,「One」為介面名稱
interface One
{
//定義一個常量
const constant = ‘constant value’;
//定義了一個抽象方法」fun1」
public function fun1();
//定義了抽象方法」fun2」
public function fun2();
}
?
上例中定義了一個介面」one」,裡面聲明了兩個抽象方法「fun1」和」fun2」,因為介面裡面所有的方法都是抽象方法,所以在聲明抽象方法的時候就不用像抽象類那樣使用」abstract」這個關鍵字了,默認的已經加上這個關鍵字,另外在介面裡邊的」public」這個訪問許可權也可以去掉,因為默認就是public的,因為介面里所有成員都要是公有的,所在對於介面裡面的成員我們就不能使用「private」的和」protected」的許可權了,都要用public或是默認的。另外在介面裡面我們也聲明了一個常量「constant「, 因為在介面裡面不能用變數成員,所以我們要使用const這個關鍵字聲明。
因為介面是一種特殊的抽象類,裡面所有的方法都是抽象方法,所以介面也不能產生實例對象; 它也做為一種規範,所有抽象方法需要子類去實現。
我們可以使用」extends」關鍵字讓一個介面去繼承另一個介面:
?php
//使用」extends」繼承另外一個介面
interface Two extends One
{
function fun3();
function fun4();
}
?
而我們定義一介面的子類去實現介面中全部抽象方法使用的關鍵字是」implements」,而不是我們前面所說的」extends」;
代碼
?php
//使用「implements」這個關鍵字去實現介面中的抽象方法 介面和類之間
class Three implements One
{
function fun1()
{
…
}
function fun2()
{
…
}
}
//實現了全部方法,我們去可以使用子類去實例化對象了
$three=new Three();
?
我們也可以使用抽象類,去實現介面中的部分抽象方法,但要想實例化對象,這個抽象類還要有子類把它所有的抽象方法都實現才行;
在前面我們說過,PHP是單繼承的,一個類只能有一父類,但是一個類可以實現多個介面,就相當於一個類要遵守多個規範,就像我們不僅要遵守國家的法律,如果是在學校的話,還要遵守學校的校規一樣;
?php
//使用implements實現多個介面
class Four implemtns 介面一, 介面二, ….
{
//必須把所有介面中的方法都要實現才可以實例化對象。
}
?
PHP中不僅一個類可以實現多個介面,也可以在繼承一個類的同時實現多個介面, 一定要先繼承類再去實現介面;
?php
//使用extends繼承一個類,使用implements實現多個介面
class Four extends 類名一 implemtns 介面一, 介面二, ….
{
//所有介面中的方法都要實現才可以實例化對象
………
}
?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192336.html