博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ThinkPHP Logic层
阅读量:4660 次
发布时间:2019-06-09

本文共 2240 字,大约阅读时间需要 7 分钟。

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:  
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:  
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

你可能感兴趣的文章
Hive新功能 Cube, Rollup介绍
查看>>
webpack:(模块打包机)
查看>>
程序员不得不知的座右铭(世界篇)
查看>>
表格-鼠标经过单元格变色(暂不支持IE6)
查看>>
实时读取日志文件
查看>>
【寒假集训系列2.12】
查看>>
2018牛客多校第六场 I.Team Rocket
查看>>
c++初始化函数列表
查看>>
JS的this总结(上)-call()和apply()
查看>>
BZOJ 1984: 月下“毛景树”( 树链剖分 )
查看>>
理解 YOLO
查看>>
ActiveMQ中JMS的可靠性机制
查看>>
”语义“的理解
查看>>
近段时间学习html和CSS的一些细碎总结
查看>>
第三章 栈和队列
查看>>
「Vue」v-html生成的图片大小无法调整的解决办法
查看>>
【BZOJ 4665】 4665: 小w的喜糖 (DP+容斥)
查看>>
Git 的 .gitignore 配置
查看>>
Language Integrated Query ----序
查看>>
【HDU】1542 Atlantis
查看>>