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 相关文章推荐
Optimizer与Debugger兼容性问题的解决方法
Dec 01 PHP
php strcmp使用说明
Apr 22 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
php下载excel无法打开的解决方法
Dec 24 PHP
ThinkPHP多表联合查询的常用方法
Mar 24 PHP
PHP原生函数一定好吗?
Dec 08 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
php将字符串全部转换成大写或者小写的方法
Mar 17 PHP
php中array_unshift()修改数组key注意事项分析
May 16 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 03 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
Aug 15 PHP
php自动加载代码实例详解
Feb 26 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
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
PHP 文件上传限制问题
2019/09/01 PHP
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
朴素贝叶斯算法的python实现方法
2014/11/18 Python
Python是编译运行的验证方法
2015/01/30 Python
Java分治归并排序算法实例详解
2017/12/12 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
金蝶的一道SQL笔试题
2012/12/18 面试题
老总助理工作岗位职责
2014/02/06 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
大学生操行评语大全
2014/12/31 职场文书
员工试用期工作总结
2019/06/20 职场文书
Python实现简单的猜单词
2021/06/15 Python