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
PHP 和 MySQL 基础教程(四)
Oct 09 PHP
PHP 中执行排序与 MySQL 中排序
Apr 21 PHP
分享一个PHP数据流应用的简单例子
Jun 01 PHP
基于MySQL体系结构的分析
May 02 PHP
php实现telnet功能示例
Apr 08 PHP
php制作动态随机验证码
Feb 12 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
Jun 06 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
使用Laravel中的查询构造器实现增删改查功能
Sep 03 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 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过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
php检查页面是否被百度收录
2015/10/28 PHP
PHP中list方法用法示例
2016/12/01 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
jquery显示和隐藏div特效实例
2013/02/27 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
javascript如何创建对象
2016/08/29 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
python新手经常遇到的17个错误分析
2014/07/30 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
python实现各进制转换的总结大全
2017/06/18 Python
python实现画圆功能
2018/01/25 Python
python微信撤回监测代码
2019/04/29 Python
Python列表与元组的异同详解
2019/07/02 Python
python3实现mysql导出excel的方法
2019/07/31 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
python调用摄像头的示例代码
2020/09/28 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
银行演讲稿范文
2014/01/03 职场文书
物理学专业求职信
2014/07/04 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
地道战观后感500字
2015/06/04 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript