ZJApi_ByCI

ZJApi_ByCI

1.总体架构说明

增加Service

n 由于CI没有Service层,一般都会把业务逻辑写到Controller里或者Model里,这样会造成业务层和控制层、业务层和持久层相互耦合,显然这是十分不合理的,因此直接改写了CI框架代码增加了Service

Ø Model(DAO):数据持久层的工作,封装对数据库的操作,可供一个或者多个Service一次或者多次调用。

Ø Service : 业务逻辑层,负责业务模块的逻辑应用设计,controller中就可以调用service的接口实现业务逻辑处理,提高了通用的业务逻辑的复用性,设计到具体业务实现会调用Model的接口。(PS:比如说用户下订单,这必然会有一系列的操作:更新购物车、添加订单记录、会员添加积分等等,且下订单的过程可能在多种场景出现,如果这样的代码放Controller中则很臃肿难以复用,如果放model会让持久层和业务层耦合。

Ø Controller :控制层,负责具体业务流程控制,这里调用service层,将数据返回到视图

Ø View : 负责前端页面展示,与Controller紧密联系。

 

多环境兼容

n 多环境兼容:通过切换“index.php” 文件中的“ENVIRONMENT”常量进行处理

Ø development:开发环境;testing:测试环境;production:生产(发布)环境

Ø 要创建特定环境的配置文件,新建或复制一个配置文件到application/config/{ENVIRONMENT}/{FILENAME}.php。例如:application/config/production/config.php。当你将 ENVIRONMENT 常量设置为 ‘production’ 时,你新建的生产环境下的config.php 里的配置将会加载。(CodeIgniter 总是先加载全局配置文件(例如, application/config/ 目录下的配置文件),然后再去尝试加载当前环境的配置文件。这意味着你没必要将所有的配置文件都放到特定环境的配置目录下,只需要放那些在每个环境下不一样的配置文件就可以了。

 

多平台兼容

n 多环境兼容(目前支持LocalSAE:通过切换“index.php” 文件中的“SERVER_PLAT”常量进行处理

Ø Local,兼容开发:

Ø SAE修改CI框架直接支持sae环境

l memcache兼容SAE平台的memcachegetset(需要其他操作要再封装测试!)

l redis兼容SAE平台的KVDBgetset(需要其他操作要再封装测试!)

 

memcache方面

n memcache调整:

Ø 不使用save方法,改为使用通用的set方法,如:

$this->cache->memcached->set('foo', 'bar', 10);

n memcache说明:

Ø 一般在构造方法中引入缓存驱动:

 $this->load->driver('cache');(只需引入一次,即可使用memcacheredis

 

redis方面

n redis调整:

Ø 不使用save方法,改为使用通用的set方法,如SAE平台使用KVDB代替redis,第三个参数“过期时间”无效):

$this->cache->redis->set('redisSet', 'redisValue', 10);

n redis说明:

Ø 一般在构造方法中引入缓存驱动:

 $this->load->driver('cache');(只需引入一次,即可使用memcacheredis

 

多应用部署

n 新建“template”目录,并把原来的“application”目录和“index.php”文件放入其中

Ø 修改此“index.php”文件,把“$system_path”改为“../system

Ø 修改“application/config/config.php”文件,把“$config['index_page']”改为“'../template/index.php'(每复制“template”目录增加一个新app时都需要进行此步骤,并其中template换成增加的app的名字,即'../template/index.php'”,““'../app/index.php'””)

rewrite规则

n 各平台都需要增加rewrite规则

Ø sae上需要修改“config.yaml”文件,增加rewrite规则,注意顺序!例如:

- rewrite: if (!-f && %{REQUEST_URI} ~ "template/(.*)") goto "/template/index.php/%1"

- rewrite: if (!-f && %{REQUEST_URI} ~ "app1/(.*)") goto "/app1/index.php/%1"

l PS:如果不在sae上部署,只要增加.htacess文件即可

 

autoload自动加载类库

n 自动加载数据库:

Ø application/config/autoload.php 中的 library 数组里添加 :$autoload['libraries'] = array('database');

Ø $this->load->database();就都不用加了

n 自动加载my_curl

Ø application/config/autoload.php 中的 library 数组里添加 :$autoload['libraries'] = array(my_curl);

n 自动加载my_des

Ø application/config/autoload.php 中的 library 数组里添加 :$autoload['libraries'] = array(my_des);

n 自动加载my_response

Ø application/config/autoload.php 中的 library 数组里添加 :$autoload['libraries'] = array(my_response);

n 自动加载my_config

Ø application/config/autoload.php 中的 library 数组里添加 :$autoload['config'] = array(my_config);

 

autoload自动加载辅助函数

n 自动加载urlhtml辅助函数

Ø application/config/autoload.php 

$autoload['helper'] = array('url', 'html');

 

增加自定义类库

n 增加CI_My_curl(已配置自动加载):

Ø 支持$this->my_curl->doCurlGetRequest($url)

Ø 支持$this->my_curl->doCurlPostRequest($url)

n 增加CI_My_des(掌金des加解密库)(已配置自动加载):

Ø 支持$this->my_des->encode("WhJSN0B9CTSAZAG84XfFIJMkzlf5CzPZ", "sycs84ju");

Ø 支持$this->my_des->decode($re, "sycs84ju");

n 增加CI_My_response(已配置自动加载):

n 增加MyApi(已配置自动加载):方便调用老的api

 

关于返回结果集

n 配置错误码:

Ø config/my_config.php中配置错误码(已配置自动加载

Ø 框架级错误码:1-401,例如: my_error_code401

Ø 应用级错误码:402-1000,例如:my_error_code501

n 配置正确返回码:1001-2000,例如:my_success_code1000

 

关于hooks

n hooks中会校验参数中是否带tokenos,针对不需要hooksController或者Action提供支持,在“template/application/config/my_config.php”中的“$config['my_hooks_ignore']”进行配置

 

关于参数

n 入参:desencode(jsonencode(@p))

Ø @p->token:

接口需要加token接口过滤参数,见“总体技术规范”

http://192.168.10.243/zj_Frameworks/PHP/ZJApi_ByCI/template/Z_test/testToken

Ø @p->os:

接口需要加os参数,见“总体技术规范”

Ø 取参数:My_Base_ControllerpreDealPara($para, $arr = array())

 

 

 

forWeb前端的特殊处理

n 目录结构有所区别,见“2.开发规范及步骤——目录结构

n autoload.php中不要配置自动加载“database

 

 

 

 

 

2.开发规范及步骤

关于框架

n 总体要求见“总体技术规范→应用程序框架规范”,应用开发工程师不能调整以下文件

Ø system目录

Ø application→application→confighooks.php

Ø applicationapplication→controllersMy_Base_Controller.php

Ø ...

 

新建应用开发

n 复制整个框架,把“template”重命名为本应用的名字(技术主管把握),后续参见“总体架构说明→多应用部署”

 

 

 

 

目录结构

n 单应用目录结构为(一般为web目录

Ø system

Ø application

<script type="text/javascript" src='<?=base_url().'assets/js/Ajax.js'?>'></script>

Ø assets

Ø index.php

n controllers下一般不再分文件夹

Ø My_Base_Controller extends CI_Controller

Ø 所有自己写的Controller必须继承My_Base_Controller

n models下一般不再分文件夹

n services下一般不再分文件夹

n views下要求按照controller分文件夹

 


git地址:https://github.com/lsxfxin/ZJApi_ByCI

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值