>[danger]之前我們講了控制器,數據庫操作等程序的基本的語法和規則,在實際開發的過程,我們會把一些常用的操作封裝成一個類去做調用,減少代碼的冗余,減少后期程序的維護成本,這節課就來講解一下,iWebShop自定義類,API類的做法。
## 一、自定義類
在iWebShop中,幾乎所有的自定義類都是直接可以使用的,只要在classes目錄下直接創建對應類文件,就可以在程序中直接調用,不用做引入之類的。
在classes下創建sunzoontest.php,代碼如下:
~~~
<?php
class SunzoonTest
{
public function Test()
{
return "自定義類的輸出";
}
}
?>
~~~
在Controller的類中使用該類的代碼如下:
~~~
$test=new SunzoonTest();
echo $test->test();
~~~
代碼輸出:?自定義類的輸出
## 二、API類
除了自定義的類以外,classes目錄下還有一個api目錄,這個目錄下放一些常用的數據查詢類,可以直接調用。
~~~
$data = Api::run(接口名字,參數...);
~~~
接口名字定義于 api_resource.php 文件中,有2種方式實現:query標簽式和 class 自定義式,以下代碼為query的定義方法:
~~~
'getAnnouncementList'=>array(
'query'=>array('name'=>'announcement','order'=>'id desc','limit'=>10)
),
~~~
在代碼中直接調用:
~~~
$data = Api::run(‘getAnnouncementList’);
~~~
以下代碼為class 自定義式的的定義方法:
~~~
//用戶中心-我的代金券
'getPropList' => array(
'file' => 'ucenter.php','class' => 'APIUcenter'
),
~~~
在api目錄中找到ucenter.php,打開的找到以下代碼:
~~~
//用戶中心-我的代金券
public function getPropList($ids){
$page = IReq::get('page') ? IFilter::act(IReq::get('page'),'int') : 1;
$query = new IQuery('prop');
$query->where = "id in(".$ids.") and is_send = 1";
$query->page = $page;
return $query;
}
~~~
這就是接口的定義。
## 什么時候用query定義,什么時候用class 自定義式?
如數據不需要判斷,直接傳參數就能取到,就使用query,方便快捷
如在程序中還要加入大量的業務邏輯,那么使用class自定義式,這樣比較清晰
由于query越多,api_resource.php這個文件就越長,所以從易于維護的角度考慮,使用class自定義式則是更好的一種方法。
>[warning]如有不明白的地方,留言或是加入我們?“三眾技術QQ交流群”一起討論
## 關于我們
>[danger][三眾科技](http://www.sunzoon.com)資訊平臺——大道至簡,悅你所閱!
>本教程由[三眾簡悅](http://it.sunzoon.com)原創,轉載請注明出處,作者:bobball,由bobo整理成看云書籍
三眾技術交流群:**543102562**
歡迎大家加入我們,共同討論IT,互聯網技術。同時可以掃描下面的二維碼關注我們,謝謝!
