首先你要寫一個接口文檔,定義數(shù)據(jù)結(jié)構(gòu)
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供東臺網(wǎng)站建設、東臺做網(wǎng)站、東臺網(wǎng)站設計、東臺網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、東臺企業(yè)網(wǎng)站模板建站服務,10多年東臺做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
然后開始封裝寫類
class a{
public function(){
$a = $_GET['a'];
echo '這里面寫業(yè)務邏輯';
echo '輸出結(jié)果366u';
}
}
PHP 接口
接口
使用接口(interface),你可以指定某個類必須實現(xiàn)哪些方法,但不需要定義這些方法的具體內(nèi)容。
我們可以通過interface來定義一個接口,就像定義一個標準的類一樣,但其中定義所有的方法都是空的。
接口中定義的所有方法都必須是public,這是接口的特性。
實現(xiàn)
要實現(xiàn)一個接口,可以使用implements操作符。類中必須實現(xiàn)接口中定義的所有方法,否則 會報一個fatal錯誤。如果要實現(xiàn)多個接口,可以用逗號來分隔多個接口的名稱。
Note:
實現(xiàn)多個接口時,接口中的方法不能有重名。
Note:
接口也可以繼承,通過使用extends操作符。
常量
接口中也可以定義常量。接口常量和類常量的使用完全相同。 它們都是定值,不能被子類或子接口修改。
范例
Example #1 接口代碼示例
?php
// 聲明一個'iTemplate'接口
interface iTemplate
{
public function setVariable($name, $var);
public function getHtml($template);
}
// 實現(xiàn)接口
// 下面的寫法是正確的
class Template implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this-vars[$name] = $var;
}
public function getHtml($template)
{
foreach($this-vars as $name = $value) {
$template = str_replace('{' . $name . '}', $value, $template);
}
return $template;
}
}
// 下面的寫法是錯誤的,會報錯:
// Fatal error: Class BadTemplate contains 1 abstract methods
// and must therefore be declared abstract (iTemplate::getHtml)
class BadTemplate implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this-vars[$name] = $var;
}
}
?
Example #2 Extendable Interfaces
?php
interface a
{
public function foo();
}
interface b extends a
{
public function baz(Baz $baz);
}
// 正確寫法
class c implements b
{
public function foo()
{
}
public function baz(Baz $baz)
{
}
}
// 錯誤寫法會導致一個fatal error
class d implements b
{
public function foo()
{
}
public function baz(Foo $foo)
{
}
}
?
Example #3 多個接口間的繼承
?php
interface a
{
public function foo();
}
interface b
{
public function bar();
}
interface c extends a, b
{
public function baz();
}
class d implements c
{
public function foo()
{
}
public function bar()
{
}
public function baz()
{
}
}
?
Example #4 使用接口常量
?php
interface a
{
const b = 'Interface constant';
}
// 輸出接口常量
echo a::b;
// 錯誤寫法,因為常量的值不能被修改。接口常量的概念和類常量是一樣的。
class b implements a
{
const b = 'Class constant';
}
?
你也可以看看instanceof關鍵字的文檔。
cms提供直接輸出、PHP代碼體兩種方便開發(fā)者使用的數(shù)據(jù)輸出接口。
1、直接輸出
本類型是將后臺錄入的數(shù)據(jù)格式原樣輸出到客戶端
返回格式為:
array(3) { ["code"]= int(1) ["msg"]= string(2) "ok" ["data"]= string(7) "test123" }
2、JSON數(shù)組
本類型數(shù)據(jù)內(nèi)容必須是一個json格式的數(shù)組字符串
返回格式為:
array(3) { ["code"]= int(1) ["msg"]= string(2) "ok" ["data"]= array(3) { [0]= string(1) "1" [1]= string(1) "2" [2]= string(1) "3" } }
3、php執(zhí)行代碼
4、模板查詢標簽
本類型需要有CMS模板標簽的使用經(jīng)驗,直接寫標簽代碼返回結(jié)果
例如調(diào)用news模塊全部數(shù)據(jù):
{module module=news} 或者 {list action=module module=news}
模板標簽只能寫一段,不能寫多段
通過以上的list查詢方法可調(diào)用循環(huán)標簽的全部數(shù)據(jù),當然你可以對結(jié)果進行格式化處理,使用回調(diào)方法。
5、自定義模板標簽
本類型需要有CMS模板標簽的使用經(jīng)驗,直接寫標簽代碼返回結(jié)果,區(qū)別于(4),本類型可以直接在標簽里面寫賦值方法和格式化顯示,不需要寫回調(diào)方法
這里循環(huán)出news模塊的全部數(shù)據(jù),只顯示id,title,再把thumb轉(zhuǎn)換為url地址。
也可以這樣寫,原理是將輸出變量賦值給$api數(shù)組:
{module module=news} {php $api[$key]['id']=$t['id'];} {php $api[$key]['title']=$t['title'];} {php $api[$key]['thumb']=dr_thumb($t['thumb'], 200,200);} {/module}
以上語法格式為:
6、自定義PHP代碼
本類型需要有PHP的開發(fā)使用經(jīng)驗,直接將php業(yè)務代碼寫進去
$api變量為直接返回,例如:
$api = '我的自定義返回變量值';
返回截圖如下:
也可以自定義強制返回
$api = '我的自定義返回變量值'; PhpcmfService::C()-_json(1, '我的返回腳本成功了', $api); // 成功寫法 PhpcmfService::C()-_json(0, '我的返回腳本失敗了'); // 失敗寫法
接口的流程.
建立控制器(訪問地址)-審核訪問者身份(token)-驗證提交數(shù)據(jù)是否符合類型(validate
)-處理接收數(shù)據(jù)(邏輯流程)-返回結(jié)果(json字符串).
其中要注意是否存在跨域,如果跨域要做跨域處理,例如返回jsonp.