手机
当前位置:查字典教程网 >编程开发 >php教程 >php继承的一个应用
php继承的一个应用
摘要:这样我想到了继承来解决,前面发表过一个会话类,这下简单多了,通过登录来设置用户的级别,$session->get_status()的返回值如...

这样我

想到了继承来解决,前面发表过一个会话类,这下简单多了,通过登录来设置用户的级别,$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'>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脚本的10个技巧(2)

php恢复数组的key为数字序列的方法

php查询whois信息的方法

PHP中的事务使用实例

php实现的mongodb操作类

自己动手做一个SQL解释器

php实现格式化多行文本为Js可用格式

一段php加密解密的代码

PHP脚本的10个技巧(6)

做一个有下拉功能的留言版

精品推荐
分类导航