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 checkbox 取值详细说明
Aug 19 PHP
PHP 类相关函数的使用详解
May 10 PHP
深入php常用函数的使用汇总
Jun 08 PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 PHP
PHP采集类Snoopy抓取图片实例
Jun 19 PHP
ThinkPHP关于session的操作方法汇总
Jul 18 PHP
smarty内置函数config_load用法实例
Jan 22 PHP
PHP中返回引用类型的方法
Apr 03 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
Oct 09 PHP
PHP的Yii框架的常用日志操作总结
Dec 08 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 PHP
php7 list()、session及其他模块的修改实例分析
May 25 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操作xml
2013/10/27 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
python如何读写csv数据
2018/03/21 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
keras多显卡训练方式
2020/06/10 Python
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
毕业生幼师求职自荐信
2013/10/01 职场文书
公司企业表扬信
2014/01/11 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
运动会新闻报道稿
2015/07/22 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python
详解pytorch创建tensor函数
2022/03/22 Python