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 什么是PEAR?
Mar 19 PHP
PHP中使用CURL伪造来路抓取页面或文件
May 04 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
header导出Excel应用示例
Jan 24 PHP
PHP中file_get_contents高?用法实例
Sep 24 PHP
ThinkPHP分页实例
Oct 15 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
在SAE上搭建最新wordpress的方法
Dec 21 PHP
PHP模板引擎Smarty内建函数详解
Apr 11 PHP
PHP实现多图上传和单图上传功能
May 17 PHP
Yii框架应用组件用法实例分析
May 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
PHP加速 eAccelerator配置和使用指南
2009/06/05 PHP
PHP daddslashes 使用方法介绍
2012/10/26 PHP
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
总结对比php中的多种序列化
2016/08/28 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
javascript回调函数详解
2018/02/06 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
2018/08/17 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
python爬取51job中hr的邮箱
2016/05/14 Python
Python的requests网络编程包使用教程
2016/07/11 Python
深入理解Python对Json的解析
2017/02/14 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
Python对象转换为json的方法步骤
2019/04/25 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
python空元组在all中返回结果详解
2020/12/15 Python
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
加拿大时装零售商:Influence U
2018/12/22 全球购物
库房保管员岗位职责
2014/04/07 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
导游词之扬州大明寺
2019/10/09 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android