php继承的一个应用


Posted in PHP onSeptember 06, 2011

这样我
想到了继承来解决,前面发表过一个会话类,这下简单多了,通过登录来设置用户的级别,$session->get_status()的返回
值如果是0,则表明当前用户并不是博主,因此并不具有删除,编辑文章的权限。如果是返回值是1,则表明是博主本人。好
了,废话少扯。先上代码

class operationLimit 
// operating limit. When no user login or is not this user 
{ 
/* for limit the user operat at post. 
* @author:xiaoai 8.12 2011 
*/ 
static $limitObject; 
public function __construct() {} 
// when call the function but does not exist 
public static function getObject() 
{ 
if( !(self::$limitObject instanceof self)) 
self::$limitObject = new self; 
return self::$limitObject ; 
} 
protected function setLimit() {} 
public function getReadA($postName) 
{ 
return '<a herf=\'http://foodstory.me/post/'.$postname. 
'.php\' class=\'readmoreLink\'>readmore</a>'; 
} 
} 
class operationUnlimit extends operationLimit 
// when is this user 
{ 
public static function getObject() 
{ 
if( !(self::$limitObject instanceof self)) 
self::$limitObject = new self; 
return self::$limitObject ; 
} 
public function getUpdateA($name) 
{ 
return '<a href=\'http://foodstory.me/post/'.$name. 
'.php?do=update\' id=\''.$name.'\' >update</a>'; 
} 
public function getDelectA($name) 
{ 
return '<a href=\'javascript:delectPOST('.$name 
.');\' id=\'delectPOST\' >delect</a>'; 
} 
} 
class LimitFactory 
{ 
public static function getLimitObject($userStatus) 
// $userStatus = $session->get_status(); 
{ 
switch ( $userStatus ) 
{ 
case 0: 
return operationLimit::getObject(); 
case 1: 
return operationUnlimit::getObject(); 
default: 
return limit::getObject(); 
} 
} 
}

LimitFactory是一个工厂类,兼静态类。 即不需要构造对象,它的职责只是根据传入的用户权限值,来判断该返回 operationLimit类 还是 operationUnlimit类 的实例。
有一些共用的操作,比如阅读更多,operationUnlimit类继承了这个方法,而后又创造了一些新方法,比如返回删除,更新链接的方法。
用法示例
$limitObj = LimitFactory::getLimitObject($session->get_status()); 
echo $limitObj->getReadA('hi'); 
echo $limitObj->getDelectA('hah');

下面谈点无关的,刚开始当我没有在operationUnlimit类中写getObject() 静态方法,发现调用
return operationUnlimit::getObject();
返回的却是超类的对象,感觉奇怪,我在getObject();方法中用的是self来表示当前的类,没有指明一定要返回超类的对象啊。当在子
类中重写了这个静态方法才OK。后来查了下google,依稀理解,编译器在刚开始的时候就把getObject方法和超类绑定在一起,因此
在子类中的调用依然是返回超类对象。

还有,是否觉得字符串中那么多转义符很难分辨,那么改用
echo <<<Eeeeeee
<a href='foodstory.me/post/{$name}.php' >read more</a>
Eeeeeee;
这样清爽了很多

PHP 相关文章推荐
用PHP实现多级树型菜单
Oct 09 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
destoon实现调用自增数字从1开始的方法
Aug 21 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
Oct 20 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
Oct 28 PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
php+mysql开发中的经验与常识小结
Mar 25 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
Nov 13 PHP
php 抽象类的简单应用
Sep 06 #PHP
PHP中PDO基础教程 入门级
Sep 04 #PHP
PHP中PDO的错误处理
Sep 04 #PHP
php中将网址转换为超链接的函数
Sep 02 #PHP
php ajax 静态分页过程形式
Sep 02 #PHP
php中防止伪造跨站请求的小招式
Sep 02 #PHP
10个实用的PHP代码片段
Sep 02 #PHP
You might like
JavaScript delete操作符应用实例
2009/01/13 Javascript
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
Django实现跨域请求过程详解
2019/07/25 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
护理学应聘自荐书范文
2014/02/05 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
自我检讨报告
2015/01/28 职场文书
2019年员工晋升管理制度范本!
2019/07/08 职场文书
python基础之类属性和实例属性
2021/10/24 Python