ThinkPHP Logic层

ThinkPHP的LIB目录下默认有Action,Behavor,Widget三个文件夹,Behavor与Widget没有用到就没有也了解,Action层可以看做是对用户行为的一种抽象,比如用户想登陆、注册、加关注、翻译单词都会被抽象为Action层的某个方法,在具体的实践中发现有这样一个问题,有时候用户的行为需要多个Action联合才能完成,ThinkPHP提供了一个R方法来完成跨Action调用,使用这个方法中似乎会导致用户URL改变,于是就萌生了Action层中再增加一层Logic层,来解决跨Action的逻辑问题,Logic层的核心职责是需要分散的多个Action联合才能完成任务聚合在一起,比如用户的某个行为需要多个Action分别去处理数据库的多张表,但现在转发给Logic层,由Logic去处理这些表。有了Logic层,就有一个好处不必在需要跨Action就能使用另一个Action提供的功能了,因为每一个Action提供的功能实际上是由Logic层去完成,只要准备好Logic层方法需要的参数,不管参数是从web里get或者post过来,还是直接代码里填写都无所谓了。

FollowerLogic.class.php实现的的用户相互关注,

   1:  <?php
   2:   
   3:  class FollowerLogic {
   4:      
   5:      protected $follower_model = null;
   6:      protected $user_model = null;
   7:   
   8:      public function __construct() {
   9:          
  10:          $this->follower_model = D('Follower');
  11:          $this->user_model = D('User');
  12:      }
  13:      
  14:      public function AddPublicFollower($uid, $follower_ids) {
  15:          // TODO 现在虽然是很想支持数组的操作,但现在这个接口有问题,
  16:          // 只在应用层一个一个的加/删
  17:          if (is_array($follower_ids)) {
  18:              // TODO 这个分支暂时不会走到
  19:              // 加入自己的观察列表
  20:              ..
  21:              
  22:          } else {
  23:              
  24:              // 加入自己的观察列表
  25:              ...
  26:          }
  27:      }
  28:      
  29:      public function DeletePublicFollwer($uid, $follower_ids) {
  30:          
  31:          if (is_array($follower_ids)) {
  32:              
  33:              // 反射删除自己的观察列表
  34:              ...
  35:              
  36:          } else {
  37:              
  38:              // 反射删除自己的观察列表
  39:              ...
  40:          }
  41:      }
  42:      
  43:      // 
  44:      public function AddQuietFollower($uid, $follower_ids) {
  45:          
  46:      }
  47:      
  48:      public function DeleteQuietFollower($uid, $follower_ids) {
  49:          // TODO 
  50:          
  51:      }
  52:   
  53:      // TODO 这里会按照策略来
  54:      public function GetFollowers() {
  55:          $data = $this->user_model->field('_id')->select();
  56:          return $data;
  57:      }
  58:  }

user_model与follower_model映射的两张表,根据不同的表设计,加关注系统的实现都是不一样的,这时不同的Action均可调用FollowrLogic提供的方法实现加关注,而不必是一个特定的URL了。

为了让ThinkPHP自动加载这个php脚本,需要在Conf目录下alias.php加上下面这一行代码,

   1:  <?php
   2:  return array(
   3:                  ....
   4:      'FollowerLogic' => LIB_PATH.'Logic/FollowerLogic.class.php',
   5:      ...
   6:  );

转载于:https://www.cnblogs.com/BlankEye/archive/2012/11/24/2786324.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值