• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

初次接触php抽象工厂模式(Elgg)_php技巧

php 搞代码 4年前 (2022-01-26) 30次浏览 已收录 0个评论

想实现这样一个功能:开展一个网站邀请活动,然后参与者(owner)将推广的网站地址链接发给好友,好友点击链接后在网站注册成功,owner的邀请日志记录条数加1。
活动类 Activity

 <BR>class Activity extends ElggEntity { <BR>private $strategy; //用于保存策略实例 <BR>public function __construction($guid) { <BR>... <BR>$this->load($guid); //载入实体 <BR>} <BR>public function addLog($data) { <BR>$this->strategy->addLog($data); //实际是 DEFAULTActivityStrategy::addLog($data) <BR>} <BR>public function load ($guid) { <BR>if (parent::load($guid)) { //此过程会将本实例的所有属性从数据库中赋值,因此 $this->strategyName的值已经被赋上了。 <BR>if ($this->strategyName != '') { <BR>$this->strategy = AbstractActivityStrategy::getInstance($this->strategyName); //加载策略类 <BR>} <BR>return true; <BR>} <BR>return false; <BR>} <BR>} <BR>


日志类 ActivityLog

 <BR>class ActivityLog extends ElggEntity { <BR>$private countValue; //邀请记录数 <BR>... <BR>} <BR>


策略类
说明:ElggEntity:所有实体基类。AbstractActivityStrategy:活动抽象类
)首先@本文来源gaodai$ma#com搞$代*码6网搞代gaodaima码创建一个活动:

 <BR>$activity = new Activity(); <BR>$activity->name = 'KKND'; //活动名称 <BR>$activity->strategyName = 'DEFAULT'; //策略名称 <BR>$activity->save(); //将活动类保存至数据库,新添加的属性(比如strategyName)也会保存 <BR>


)别人收到邀请,点击链接后,owner的邀请记录条目+1
比如邀请网址是 http://www.xinwusi.com/KKND/1234
其中/KKND/是活动名称,1234是owner的guid,假设该活动的guid为 8888,则
$activity = new Activity(8888); //获取活动实体
$activity->addLog($data); //添加邀请记录。$data包括owner的guid,活动的guid,活动名name等。
最后2行代码的过程,就是读取了该活动实体的策略名,并根据这个策略名生成一个策略实体,保存在自己的$stragety属性里,再调用其中的addLog方法增加日志记录。
以后有新活动的时候,直接把活动实例属性的策略名改了,就可以调用对应新策略中的方法了。

 <BR>class DEFAULTActivityStrategy extends AbstractActivityStrategy { <BR>... <BR>public function addLog($data) { <BR>$activityLog = new ActivityLog(); <BR>... <BR>$activityLog->save(); <BR>$activityLogAmount = new ActivityLogAmount(); //计数类 <BR>... <BR>$activityLogAmount->countValue += 1; <BR>$activityLogAmount->save(); <BR>} <BR>} <BR>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:初次接触php抽象工厂模式(Elgg)_php技巧
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址