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 相关文章推荐
通过ICQ网关发送手机短信的PHP源程序
Oct 09 PHP
PHP之COOKIE支持详解
Sep 20 PHP
CentOS6.5 编译安装lnmp环境
Dec 21 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
Mar 18 PHP
php两种无限分类方法实例
Apr 21 PHP
php文件操作相关类实例
Jun 18 PHP
php简单判断文本编码的方法
Jul 30 PHP
纯php生成随机密码
Oct 30 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
总结对比php中的多种序列化
Aug 28 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
May 27 PHP
phpmyadmin在宝塔面板里进不去的解决方案
Jul 06 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程序
2006/10/09 PHP
中篇:安装及配置PHP
2006/12/13 PHP
php面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
CentOS安装pillow报错的解决方法
2016/01/27 Python
python利用MethodType绑定方法到类示例代码
2017/08/27 Python
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
Python中作用域的深入讲解
2018/12/10 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
python中对_init_的理解及实例解析
2019/10/11 Python
python实时监控logstash日志代码
2020/04/27 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
使用CSS3来制作消息提醒框
2015/07/12 HTML / CSS
英国高街电视:High Street TV
2018/05/22 全球购物
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
JAVA程序员面试题
2012/10/03 面试题
库房保管员岗位职责
2014/04/07 职场文书
2014年学校工作总结
2014/11/20 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
单位收入证明范本
2015/06/18 职场文书
立案决定书范文
2015/06/24 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
MySQL添加索引特点及优化问题
2022/07/23 MySQL