≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

php抽象工厂模式(Elgg)的简单示例

人气:339 时间:2020-11-23

这篇文章主要为大家详细介绍了php抽象工厂模式(Elgg)的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编小韵来看看吧!

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

代码如下:

 
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; 
} 
} 

日志类 ActivityLog

代码如下:

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

策略类
说明:ElggEntity:所有实体基类。AbstractActivityStrategy:活动抽象类
)首先创建一个活动:

代码如下:

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

)别人收到邀请,点击链接后,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方法增加日志记录。
以后有新活动的时候,直接把活动实例属性的策略名改了,就可以调用对应新策略中的方法了。

代码如下:

 
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 获取远程文件内容函数用法示例
下一篇:MySQL From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数示例
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。