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生成带有雪花背景的验证码
Sep 28 PHP
php 高效率写法 推荐
Feb 21 PHP
PHP下利用header()函数设置浏览器缓存的代码
Sep 01 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
hadoop中一些常用的命令介绍
Jun 19 PHP
php网页病毒清除类
Dec 08 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
简述php环境搭建与配置
Dec 05 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
Sep 30 PHP
php分享朋友圈的实现代码
Feb 18 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
PHP attributes()函数讲解
2019/02/03 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
mpvue将vue项目转换为小程序
2018/09/30 Javascript
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
python 算法 排序实现快速排序
2012/06/05 Python
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
django 删除数据库表后重新同步的方法
2018/05/27 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
护士毕业生自荐信
2014/02/07 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
食品业务员岗位职责
2014/03/18 职场文书
安全主题班会教案
2015/08/12 职场文书
Go语言应该什么情况使用指针
2021/07/25 Golang