>[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)