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函数
Jan 11 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
Sep 11 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
Jul 01 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
Jun 24 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
有关于PHP中常见数据类型的汇总分享
Jan 06 PHP
php上传图片生成缩略图(GD库)
Jan 06 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 PHP
php微信公众号开发模式详解
Nov 28 PHP
php 生成加密公钥加密私钥实例详解
Jun 16 PHP
PHP迭代器和生成器用法实例分析
Sep 28 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
php获取后台Job管理的实现代码
2011/06/10 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
Laravel实现表单提交
2017/05/07 PHP
jquery UI 1.72 之datepicker
2009/12/29 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
2013/11/15 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
2016/11/10 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
python根据京东商品url获取产品价格
2015/08/09 Python
深入理解NumPy简明教程---数组1
2016/12/17 Python
Python实现的凯撒密码算法示例
2018/04/12 Python
Python中new方法的详解
2019/01/15 Python
深入了解Django中间件及其方法
2019/07/26 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
2019/09/05 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
python高级特性简介
2020/08/13 Python
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
密封类可以有虚函数吗
2014/08/11 面试题
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
汽车运用工程专业毕业生推荐信
2013/12/25 职场文书
普通话宣传标语
2014/06/26 职场文书
幸福中国演讲稿
2014/09/12 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
2019年入党思想汇报
2019/03/25 职场文书
python 实现定时任务的四种方式
2021/04/01 Python