天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

初次接觸php抽象工廠模式(Elgg)

想實(shí)現(xiàn)這樣一個(gè)功能:開(kāi)展一個(gè)網(wǎng)站邀請(qǐng)活動(dòng),然后參與者(owner)將推廣的網(wǎng)站地址鏈接發(fā)給好友,好友點(diǎn)擊鏈接后在網(wǎng)站注冊(cè)成功,owner的邀請(qǐng)日志記錄條數(shù)加1。
活動(dòng)類 Activity
復(fù)制代碼 代碼如下:
class Activity extends ElggEntity {
private $strategy; //用于保存策略實(shí)例
public function __construction($guid) {
...
$this->load($guid); //載入實(shí)體
}
public function addLog($data) {
$this->strategy->addLog($data); //實(shí)際是 DEFAULTActivityStrategy::addLog($data)
}
public function load ($guid) {
if (parent::load($guid)) { //此過(guò)程會(huì)將本實(shí)例的所有屬性從數(shù)據(jù)庫(kù)中賦值,因此 $this->strategyName的值已經(jīng)被賦上了。
if ($this->strategyName != '') {
$this->strategy = AbstractActivityStrategy::getInstance($this->strategyName); //加載策略類
}
return true;
}
return false;
}
}

日志類 ActivityLog
復(fù)制代碼 代碼如下:
class ActivityLog extends ElggEntity {
$private countValue; //邀請(qǐng)記錄數(shù)
...
}

策略類
說(shuō)明:ElggEntity:所有實(shí)體基類。AbstractActivityStrategy:活動(dòng)抽象類
)首先創(chuàng)建一個(gè)活動(dòng):
復(fù)制代碼 代碼如下:
$activity = new Activity();
$activity->name = 'KKND'; //活動(dòng)名稱
$activity->strategyName = 'DEFAULT'; //策略名稱
$activity->save(); //將活動(dòng)類保存至數(shù)據(jù)庫(kù),新添加的屬性(比如strategyName)也會(huì)保存

)別人收到邀請(qǐng),點(diǎn)擊鏈接后,owner的邀請(qǐng)記錄條目+1
比如邀請(qǐng)網(wǎng)址是 http://www.xinwusi.com/KKND/1234
其中/KKND/是活動(dòng)名稱,1234是owner的guid,假設(shè)該活動(dòng)的guid為 8888,則
$activity = new Activity(8888); //獲取活動(dòng)實(shí)體
$activity->addLog($data); //添加邀請(qǐng)記錄。$data包括owner的guid,活動(dòng)的guid,活動(dòng)名name等。
最后2行代碼的過(guò)程,就是讀取了該活動(dòng)實(shí)體的策略名,并根據(jù)這個(gè)策略名生成一個(gè)策略實(shí)體,保存在自己的$stragety屬性里,再調(diào)用其中的addLog方法增加日志記錄。
以后有新活動(dòng)的時(shí)候,直接把活動(dòng)實(shí)例屬性的策略名改了,就可以調(diào)用對(duì)應(yīng)新策略中的方法了。
復(fù)制代碼 代碼如下:
class DEFAULTActivityStrategy extends AbstractActivityStrategy {
...
public function addLog($data) {
$activityLog = new ActivityLog();
...
$activityLog->save();
$activityLogAmount = new ActivityLogAmount(); //計(jì)數(shù)類
...
$activityLogAmount->countValue += 1;
$activityLogAmount->save();
}
}

php技術(shù)初次接觸php抽象工廠模式(Elgg),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 色婷婷狠狠97成为人免费 | 女人高潮了拔出来了她什么感觉 | 乳女教师欲乱动漫无修版动画 | 亲女乱h文小兰第一次 | 免费在线视频成人 | 免费人成在线观看网站视频 | 又黄又爽又无遮挡在线观看免费 | 中文字幕不卡免费高清视频 | 迅雷哥在线观看高清 | 五花大绑esebdsm国产 | 亚洲一区日韩一区欧美一区a | 手机看片成人 | 永久免费在线观看视频 | 亚洲VA欧美VA天堂V国产综合 | 久青草国产在视频在线观看 | OLDMAN老头456 TUBE | 久久机热视频 这里只有精品首页 | 中文字幕在线观看亚洲日韩 | 久久精品视频15人人爱在线直播 | 男女久久久国产一区二区三区 | 天龙八部慕容属性加点 | 色内射无码AV| 亚洲免费视频日本一区二区 | 狠狠色丁香婷婷久久综合五月 | 精品伊人久久久 | 光溜溜的美女直播软件 | 又爽又黄又粗又大免费视频 | 91精选国产 | 国产人成精品综合欧美成人 | 国产在线观看成人 | 国产揄拍国产精品 | 怪物高h粗暴无尽 | 国产亚洲精品久久久久苍井松 | 久久电影精品久久99久久 | 久久成人国产精品一区二区 | 精品国产在天天线在线麻豆 | 欧美日韩国产码在线 | 97在线视频免费 | 肉色欧美久久久久久久蜜桃 | 欧美区 bt | 51久久夜色精品国产 |