这篇文章主要为大家详细介绍了php抽象工厂模式(Elgg)的简单示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小编小韵来看看吧!
想实现这样一个功能:开展一个网站邀请活动,然后参与者(owner)将推广的网站地址链接发给好友,好友点击链接后在网站注册成功,owner的邀请日志记录条数加1。代码如下:
class Activity extends ElggEntity {
private $strategy; //用于保存策略实例
public function __construction($guid) {
...
$this->load($guid); //载入实体
}
public function addLog($data) {
$this->strategy->addLog($data); //实际是 DEFAULTActivityStrategy::addLog($data)
}
public function load ($guid) {
if (parent::load($guid)) { //此过程会将本实例的所有属性从数据库中赋值,因此 $this->strategyName的值已经被赋上了。
if ($this->strategyName != '') {
$this->strategy = AbstractActivityStrategy::getInstance($this->strategyName); //加载策略类
}
return true;
}
return false;
}
}
代码如下:
class ActivityLog extends ElggEntity {
$private countValue; //邀请记录数
...
}
代码如下:
$activity = new Activity();
$activity->name = 'KKND'; //活动名称
$activity->strategyName = 'DEFAULT'; //策略名称
$activity->save(); //将活动类保存至数据库,新添加的属性(比如strategyName)也会保存
代码如下:
class DEFAULTActivityStrategy extends AbstractActivityStrategy {
...
public function addLog($data) {
$activityLog = new ActivityLog();
...
$activityLog->save();
$activityLogAmount = new ActivityLogAmount(); //计数类
...
$activityLogAmount->countValue += 1;
$activityLogAmount->save();
}
}
本文来自:http://www.q1010.com/173/13714-0.html
注:关于php抽象工厂模式(Elgg)的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。