调用关系

Action为总路由入口,Action可调用私有对象Service业务层 和 DAO数据库层

Service业务层 可调用私有对象DAO数据库层

程序全局可调用lib库下系统方法,例如:Logger(调试组件)

App::$base为全局单例类,可全局调用

App::$base->request 为当前请求,可获取当前地址,客户端ip等

App::$base->session 为系统session,可直接获取和复制,设置过期时间

App::$base->memcache 为系统memcache,可直接获取和复制,设置过期时间

App::$base->redis 为系统redis,可直接获取和复制,设置过期时间

用户可以在/app/model/下自定义model数据类,通过App::$model获取,例如:

App::$model->person 为当前用户,可在/app/model/person.php中定义

简单示例

  1. namespace app\controller;
  2. use App;
  3. /**
  4. * 主页Action
  5. * @property \app\service\projectService $projectService
  6. * @property \app\dao\projectDAO $projectDAO
  7. */
  8. class testAction extends baseAction
  9. {
  10. // init方法会在action执行前被执行
  11. public function init()
  12. {
  13. // 未登录时调整登录页面
  14. if(!App::$model->person->exist()){
  15. return App::$base->request->redirect('/auth/login/');
  16. }
  17. }
  18.  
  19. //默认路由index
  20. public function action_index()
  21. {
  22. // 获取当前用户
  23. $person = App::$model->person;
  24. $members = App::$base->memcache->get('cache_'.$person->project_id);
  25. if (!$members){
  26. // 获取用户所在项目成员
  27. $project = $this->projectDAO->find(array('id'=>$person->project_id));
  28. $members = $this->projectService->getMembers($project['id']);
  29. App::$base->memcache->set('cache_'.$person->project_id, $members);
  30. }
  31. //返回 project/members.tpl.php
  32. return $this->display('project/members', array('members'=>$members));
  33. }
  34. }

P.S: 示例中的用法会在下面具体展开介绍