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 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
一个从别的网站抓取信息的例子(域名查询)
Oct 09 PHP
菜鸟学PHP之Smarty入门
Jan 04 PHP
实用函数2
Nov 08 PHP
php常用ODBC函数集(详细)
Jun 24 PHP
phpstrom使用xdebug配置方法
Dec 17 PHP
php实现无限级分类
Dec 24 PHP
php传值赋值和传地址赋值用法实例分析
Jun 20 PHP
apache和PHP如何整合在一起
Oct 12 PHP
CI框架中类的自动加载问题分析
Nov 21 PHP
PHP批量修改文件名称的方法分析
Feb 27 PHP
PHP实现随机数字、字母的验证码功能
Aug 01 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
3
2006/10/09 PHP
PHP 上传文件大小限制
2009/07/05 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
XENON基于JSON变种
2010/07/27 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
简单理解vue中Props属性
2016/10/27 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
护理自荐信范文
2013/10/05 职场文书
校园文化建设方案
2014/02/03 职场文书
关于保护环境的建议书
2014/08/26 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
信用卡工资证明范本
2014/10/17 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
五年级数学教学反思
2016/02/16 职场文书
python中mongodb包操作数据库
2022/04/19 Python