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 相关文章推荐
粗略计算在线时间,bug:ip相同
Dec 09 PHP
php调用mysql存储过程
Feb 14 PHP
PHP 程序员应该使用的10个组件
Oct 31 PHP
php上的memcache和memcached两个pecl库
Mar 29 PHP
简单的cookie计数器实现源码
Jun 07 PHP
利用PHP实现短域名互转
Jul 05 PHP
Ajax+PHP快速上手及简单应用说明
Jul 24 PHP
php生成静态页面的简单示例
Apr 17 PHP
php实现文件下载实例分享
Jun 02 PHP
php实现RSA加密类实例
Mar 26 PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 28 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
递归列出所有文件和目录
2006/10/09 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
Angularjs 基础入门
2014/12/26 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
详解用vue.js和laravel实现微信授权登陆
2017/06/23 Javascript
AngularJS 应用模块化的使用
2018/04/04 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
原生js实现随机点名
2020/07/05 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
Sanic框架应用部署方法详解
2018/07/18 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
会议活动邀请函
2014/01/27 职场文书
两只小狮子教学反思
2014/02/05 职场文书
年终总结会议主持词
2014/03/17 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
婚前财产公证书
2014/04/10 职场文书
保护动物倡议书
2014/04/15 职场文书
感谢信模板大全
2015/01/23 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis