时间:2021-07-01 10:21:17 帮助过:20人阅读
- <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> <br>日志类 ActivityLog <br><span style="CURSOR: pointer" onclick="doCopy('code57179')"><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>class ActivityLog extends ElggEntity { <br>$private countValue; //邀请记录数 <br>... <br>} <br> <br>策略类 <br>说明:ElggEntity:所有实体基类。AbstractActivityStrategy:活动抽象类 <br>)首先创建一个活动: <br><span style="CURSOR: pointer" onclick="doCopy('code35153')"><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>$activity = new Activity(); <br>$activity->name = 'KKND'; //活动名称 <br>$activity->strategyName = 'DEFAULT'; //策略名称 <br>$activity->save(); //将活动类保存至数据库,新添加的属性(比如strategyName)也会保存 <br> <br>)别人收到邀请,点击链接后,owner的邀请记录条目+1 <br>比如邀请网址是 http://www.xinwusi.com/KKND/1234 <br>其中/KKND/是活动名称,1234是owner的guid,假设该活动的guid为 8888,则 <br>$activity = new Activity(8888); //获取活动实体 <br>$activity->addLog($data); //添加邀请记录。$data包括owner的guid,活动的guid,活动名name等。 <br>最后2行代码的过程,就是读取了该活动实体的策略名,并根据这个策略名生成一个策略实体,保存在自己的$stragety属性里,再调用其中的addLog方法增加日志记录。 <br>以后有新活动的时候,直接把活动实例属性的策略名改了,就可以调用对应新策略中的方法了。 <br><span style="CURSOR: pointer" onclick="doCopy('code74674')"><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><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></li><li><p></p></li><li><p align="left"><span id="url" itemprop="url">http://www.bkjia.com/PHPjc/321487.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">true</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/321487.html</span><span id="genre" itemprop="genre">TechArticle</span><span id="description" itemprop="description">想实现这样一个功能:开展一个网站邀请活动,然后参与者(owner)将推广的网站地址链接发给好友,好友点击链接后在网站注册成功,owner的...</span></p></li><li> </li></ol></pre></li></ol></pre></li></ol></pre>