详细说明:
- 如果你的项目要采用InitPHP的分层体系方式,那么Service这一业务逻辑层是必须的,而且是应用程序核心的部分。
- 如果采用MVC模式,那么可以放弃此层应用,直接在Controller调用Dao层就可以了。
- Service层是介于Controller和Dao中间层,主要的职责是处理业务的逻辑,封装成Controller可以通用调用的服务接口。例如:用户注册接口,userRegister()
- 因为各种项目和开发的不同,Service层在Mvc的时候不需要存在,所以InitPHP框架内置的Service API只有两个接口,也是Service比较常用的两个接口。
- 所有的Service需要继承InitPHP框架提供的框架基类Service
- 建议使用Zend Studio工具开发,有代码提示功能,能将所有的API提示显示,方便您的开发速度
API使用:
- 在Service中,直接$this->service->就能获取到Service的API函数了,使用zend studio的话,会有代码提示。
class testService extends Service {
public function test() {
$this->service->parse_data(); //使用Service的API函数
$this->getTestaDao()->test();
}
/**
* @return testDao
*/
private function getTestDao() {
return InitPHP::getDao('test', 'test');
}
/**
* @return testaDao
*/
private function getTestaDao() {
return InitPHP::getDao('testa', 'test');
}
}
应用配置:
/**
* Service配置参数
* 1. 你可以配置service的路径和文件(类名称)的后缀名
* 2. 一般情况下您不需要改动此配置
*/
$InitPHP_conf['service']['service_postfix'] = 'Service'; //后缀
$InitPHP_conf['service']['path'] = 'library/service/'; //service路径
调用Service类:
- InitPHP框架提供了一个InitPHP::getService() 全局API函数,可以直接单例-实例化Service
- 接口有两个参数,第一个参数是Service的类名称,不需要带后缀'Service';第二个参数是文件夹路径,默认Service都是放在
lib/service/文件夹下的,也会碰到项目比较庞大,将Service类进行分类,比如分成User的类,那么文件夹目录
lib/service/user/
- InitPHP::getService和InitPHP::getDao两个接口的用法类似。全局都可以使用。如果用户采用MVC模式,直接在Controller中直接导入Dao即可。
/**
* 【静态】获取Service-实例并且单例模式获取Service
* 1.单例模式获取
* 2.可以选定对应Service路径path
* 3. service需要在配置文件中配置参数,$path对应service目录中的子目录
* 全局使用方法:InitPHP::getService($servicename, $path = '')
* @param string $servicename 服务名称
* @param string $path 路径
* @return object
*/
public static function getService($servicename, $path = '') {
global $InitPHP_conf;
$path = ($path == '') ? '' : $path . '/';
$class = $servicename . $InitPHP_conf['service']['service_postfix'];
$file = rtrim($InitPHP_conf['service']['path'], '/') . '/' . $path . $class . '.php';
if (!InitPHP::import($file)) return false;
return InitPHP::loadclass($class);
}
class indexController extends Controller {
public $initphp_list = array('test');
public function run() {
$this->view->set_tpl('test'); //设置一个test.htm的模板页面
$this->view->display(); //模板显示
}
public function test() {
echo 'index.php?c=index&a=test 才会执行';
$code = $this->getLibrary('code');
$code->getcode();
}
public function before() {
echo '前置执行Action';
}
public function after() {
echo '后置执行Action';
}
/**
* @return testService
*/
private function getTestService() {
return InitPHP::getService('test','test'); //获取Service
}
}