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中使用sockets:从新闻组中获取文章
Oct 09 PHP
WML,Apache,和 PHP 的介绍
Oct 09 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Mar 20 PHP
PHPMailer的主要功能特点和简单使用说明
Feb 17 PHP
封装ThinkPHP的一个文件上传方法实例
Oct 31 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
php实现微信支付之现金红包
May 30 PHP
PHP使用Redis实现Session共享的实现示例
May 12 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
PHP重载基础知识回顾
Sep 10 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的几个常用数字判断函数代码
2012/04/24 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
2011/03/12 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
使用js画图之画切线
2015/01/12 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
Python如何生成树形图案
2018/01/03 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
Python如何获取文件路径/目录
2020/09/22 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
大学生村官演讲稿
2014/04/25 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
瘦西湖导游词
2015/02/03 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
2015年社区工作总结
2015/04/08 职场文书
个人催款函范文
2015/06/23 职场文书
Redis读写分离搭建的完整步骤
2021/09/14 Redis
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android