cms提供直接輸出、PHP代碼體兩種方便開發(fā)者使用的數(shù)據(jù)輸出接口。
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比榮縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式榮縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋榮縣地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
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、模板查詢標(biāo)簽
本類型需要有CMS模板標(biāo)簽的使用經(jīng)驗,直接寫標(biāo)簽代碼返回結(jié)果
例如調(diào)用news模塊全部數(shù)據(jù):
{module module=news} 或者 {list action=module module=news}
模板標(biāo)簽只能寫一段,不能寫多段
通過以上的list查詢方法可調(diào)用循環(huán)標(biāo)簽的全部數(shù)據(jù),當(dāng)然你可以對結(jié)果進(jìn)行格式化處理,使用回調(diào)方法。
5、自定義模板標(biāo)簽
本類型需要有CMS模板標(biāo)簽的使用經(jīng)驗,直接寫標(biāo)簽代碼返回結(jié)果,區(qū)別于(4),本類型可以直接在標(biāo)簽里面寫賦值方法和格式化顯示,不需要寫回調(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è)務(wù)代碼寫進(jìn)去
$api變量為直接返回,例如:
$api = '我的自定義返回變量值';
返回截圖如下:
也可以自定義強(qiáng)制返回
$api = '我的自定義返回變量值'; PhpcmfService::C()-_json(1, '我的返回腳本成功了', $api); // 成功寫法 PhpcmfService::C()-_json(0, '我的返回腳本失敗了'); // 失敗寫法
PHP與大多數(shù)面向?qū)ο缶幊陶Z言一樣,不支持多重繼承.也就是說每個類只能繼承一個父類.為了解決這個問題,PHP引入了接口,接口的思想是指定了一個實現(xiàn)了該接口的類必須實現(xiàn)的一系列方法.接口是一種特殊的抽象類,抽象類又是一種特殊的類,所以接口也是一種特殊的類,為什么說接口是一種特殊的抽象類呢?如果一個抽象類里面的所有的方法都是抽象方法,那么我們就換一種聲明方法使用“接口“;也就是說接口里面所有的方法必須都是聲明為抽象方法,另外接口里面不能聲明變量(但可聲明常量constant),而且接口里面所有的成員都是public權(quán)限的。所以子類在實現(xiàn)的時候也一定要使用public權(quán)限實限。
聲明一個類的時候我們使用的關(guān)鍵字是”class”,而接口一種特殊的類,使用的關(guān)鍵字是“interface”;
類的定義: class 類名{ … } ,接口的聲明:interface 接口名{ …}
代碼
代碼
?php
//定義一個接口使用interface關(guān)鍵字,“One”為接口名稱
interface One
{
//定義一個常量
const constant = 'constant value';
//定義了一個抽象方法”fun1”
public function fun1();
//定義了抽象方法”fun2”
public function fun2();
}
?
上例中定義了一個接口”one”,里面聲明了兩個抽象方法“fun1”和”fun2”,因為接口里面所有的方法都是抽象方法,所以在聲明抽象方法的時候就不用像抽象類那樣使用”abstract”這個關(guān)鍵字了,默認(rèn)的已經(jīng)加上這個關(guān)鍵字,另外在接口里邊的”public”這個訪問權(quán)限也可以去掉,因為默認(rèn)就是public的,因為接口里所有成員都要是公有的,所在對于接口里面的成員我們就不能使用“private”的和”protected”的權(quán)限了,都要用public或是默認(rèn)的。另外在接口里面我們也聲明了一個常量“constant“, 因為在接口里面不能用變量成員,所以我們要使用const這個關(guān)鍵字聲明。
因為接口是一種特殊的抽象類,里面所有的方法都是抽象方法,所以接口也不能產(chǎn)生實例對象; 它也做為一種規(guī)范,所有抽象方法需要子類去實現(xiàn)。
我們可以使用”extends”關(guān)鍵字讓一個接口去繼承另一個接口:
?php
//使用”extends”繼承另外一個接口
interface Two extends One
{
function fun3();
function fun4();
}
?
而我們定義一接口的子類去實現(xiàn)接口中全部抽象方法使用的關(guān)鍵字是”implements”,而不是我們前面所說的”extends”;
代碼
?php
//使用“implements”這個關(guān)鍵字去實現(xiàn)接口中的抽象方法 接口和類之間
class Three implements One
{
function fun1()
{
…
}
function fun2()
{
…
}
}
//實現(xiàn)了全部方法,我們?nèi)タ梢允褂米宇惾嵗瘜ο罅?/p>
$three=new Three();
?
我們也可以使用抽象類,去實現(xiàn)接口中的部分抽象方法,但要想實例化對象,這個抽象類還要有子類把它所有的抽象方法都實現(xiàn)才行;
在前面我們說過,PHP是單繼承的,一個類只能有一父類,但是一個類可以實現(xiàn)多個接口,就相當(dāng)于一個類要遵守多個規(guī)范,就像我們不僅要遵守國家的法律,如果是在學(xué)校的話,還要遵守學(xué)校的校規(guī)一樣;
?php
//使用implements實現(xiàn)多個接口
class Four implemtns 接口一, 接口二, ….
{
//必須把所有接口中的方法都要實現(xiàn)才可以實例化對象。
}
?
PHP中不僅一個類可以實現(xiàn)多個接口,也可以在繼承一個類的同時實現(xiàn)多個接口, 一定要先繼承類再去實現(xiàn)接口;
?php
//使用extends繼承一個類,使用implements實現(xiàn)多個接口
class Four extends 類名一 implemtns 接口一, 接口二, ….
{
//所有接口中的方法都要實現(xiàn)才可以實例化對象
………
}
?
比如一個自定義函數(shù):function test(){echo ‘hello world’;}就可以叫做 api。api 既可以是單個的函數(shù),也可以是封裝在類里的方法,當(dāng)然它們也是程序代碼。開發(fā)一個 api 的流程可以很簡單,也可以很復(fù)雜,視具體的編程任務(wù)而決定,并沒有特定的規(guī)則。比如,你需要為自己建立一個常用的函數(shù)庫,命名為 my.lib.php然后把你自己編寫的自定義函數(shù),全部寫在這個文件里面,那么,你就擁有了自己的api。開發(fā)的時候,只需要引入 my.lib.php,你就可以調(diào)用自己的 api 了。這是一個比較簡單的例子。稍微復(fù)雜一點的,你可以把函數(shù)封裝在類里面,方便繼承和重用,還可以根據(jù)函數(shù)名稱做一些程序設(shè)計,這個一句話說不清楚,給一個簡單的例子吧:class mylib{function showmy(){echo ‘這是我的一個類方法’;}}調(diào)用的時候,先要實例化類,然后再調(diào)用方法。再復(fù)雜一點的就是使用類接口,區(qū)別就是接口里面定義的只是方法原型,而你需要通過具體的類來實現(xiàn)接口中的函數(shù),具體請參考 php 手冊