>[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,互联网技术。同时可以扫描下面的二维码关注我们,谢谢!
![三众科技服务号](http://it.sunzoon.com/wp-content/uploads/2016/06/qrcode_for_gh_401d25b05314_344.jpg)