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 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
Mar 10 PHP
php导出word格式数据的代码实例
Nov 25 PHP
php加密解密实用类分享
Jan 07 PHP
PHP实现QQ登录实例代码
Jan 14 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
php使用curl详细解析及问题汇总
Aug 11 PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 PHP
PHP保留两位小数的几种方法
Jul 24 PHP
PHP7数组的底层实现示例
Aug 25 PHP
PHP7 参数处理机制修改
Mar 09 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遍历数组的方法汇总分析
2013/06/08 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
PHP的自定义模板引擎
2017/03/24 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
javascript replace方法与正则表达式
2008/02/19 Javascript
JS实现点击下载的小例子
2013/07/10 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
详解Python中的文件操作
2016/08/28 Python
python学习基础之循环import及import过程
2018/04/22 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
python实现PCA降维的示例详解
2020/02/24 Python
django中嵌套的try-except实例
2020/05/21 Python
Python爬虫教程知识点总结
2020/10/19 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
超市营业员岗位职责
2013/12/20 职场文书
教师个人的自我评价分享
2014/01/02 职场文书
党校学习思想汇报
2014/01/06 职场文书
运动会表扬稿大全
2014/01/16 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
市场部经理岗位职责
2015/02/02 职场文书
检讨书怎么写
2015/05/07 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
python操作xlsx格式文件并读取
2021/06/02 Python
详解java如何集成swagger组件
2021/06/21 Java/Android