php继承的一个应用
2023-06-13 09:14:30 时间
这样我
想到了继承来解决,前面发表过一个会话类,这下简单多了,通过登录来设置用户的级别,$session->get_status()的返回
值如果是0,则表明当前用户并不是博主,因此并不具有删除,编辑文章的权限。如果是返回值是1,则表明是博主本人。好
了,废话少扯。先上代码
复制代码代码如下:
想到了继承来解决,前面发表过一个会话类,这下简单多了,通过登录来设置用户的级别,$session->get_status()的返回
值如果是0,则表明当前用户并不是博主,因此并不具有删除,编辑文章的权限。如果是返回值是1,则表明是博主本人。好
了,废话少扯。先上代码
classoperationLimit
//operatinglimit.Whennouserloginorisnotthisuser
{
/*forlimittheuseroperatatpost.
*@author:xiaoai8.122011
*/
static$limitObject;
publicfunction__construct(){}
//whencallthefunctionbutdoesnotexist
publicstaticfunctiongetObject()
{
if(!(self::$limitObjectinstanceofself))
self::$limitObject=newself;
returnself::$limitObject;
}
protectedfunctionsetLimit(){}
publicfunctiongetReadA($postName)
{
return"<aherf=\"http://foodstory.me/post/".$postname.
".php\"class=\"readmoreLink\">readmore</a>";
}
}
classoperationUnlimitextendsoperationLimit
//whenisthisuser
{
publicstaticfunctiongetObject()
{
if(!(self::$limitObjectinstanceofself))
self::$limitObject=newself;
returnself::$limitObject;
}
publicfunctiongetUpdateA($name)
{
return"<ahref=\"http://foodstory.me/post/".$name.
".php?do=update\"id=\"".$name."\">update</a>";
}
publicfunctiongetDelectA($name)
{
return"<ahref=\"javascript:delectPOST(".$name
.");\"id=\"delectPOST\">delect</a>";
}
}
classLimitFactory
{
publicstaticfunctiongetLimitObject($userStatus)
//$userStatus=$session->get_status();
{
switch($userStatus)
{
case0:
returnoperationLimit::getObject();
case1:
returnoperationUnlimit::getObject();
default:
returnlimit::getObject();
}
}
}
LimitFactory是一个工厂类,兼静态类。即不需要构造对象,它的职责只是根据传入的用户权限值,来判断该返回 operationLimit类还是operationUnlimit类的实例。
有一些共用的操作,比如阅读更多,operationUnlimit类继承了这个方法,而后又创造了一些新方法,比如返回删除,更新链接的方法。
用法示例
$limitObj=LimitFactory::getLimitObject($session->get_status());
echo$limitObj->getReadA("hi");
echo$limitObj->getDelectA("hah");
下面谈点无关的,刚开始当我没有在operationUnlimit类中写getObject()静态方法,发现调用
returnoperationUnlimit::getObject();
返回的却是超类的对象,感觉奇怪,我在getObject();方法中用的是self来表示当前的类,没有指明一定要返回超类的对象啊。当在子
类中重写了这个静态方法才OK。后来查了下google,依稀理解,编译器在刚开始的时候就把getObject方法和超类绑定在一起,因此
在子类中的调用依然是返回超类对象。
还有,是否觉得字符串中那么多转义符很难分辨,那么改用
echo<<<Eeeeeee
<ahref="foodstory.me/post/{$name}.php">readmore</a>
Eeeeeee;
这样清爽了很多
相关文章
- php://input allow_url_include,php allow_url_include的应用和解释_PHP教程
- PHP错误级别
- 快速步骤:安装PHP访问Oracle数据库(php安装oracle)
- PHP连接MySQL数据库指南(php连接到mysql)
- 编程开发之路:PHP 与 MySQL 结缘(php与mysql程序设计)
- 深入理解MySQL转义在PHP中的应用技巧(mysql转义php)
- 使用PHP实现Redis快速构建应用(redis实例php)
- MySQL PHP长连接:持久化提升应用性能(mysql php长连接)
- PHP结合MySQL实现数据库事务锁定机制(php mysql 锁)
- 解决PHP读取MSSQL数据库乱码问题(php读mssql乱码)
- 使用PHP扩展开发MSSQL应用(php扩展使用mssql)
- 使用PHP和MySQL研究论文(php mysql 论文)
- 重装Linux系统,拥抱安全的PHP运行环境(linuxphp重装)
- 开启创新之旅Redis与PHP的结合(开启 redis php)
- 使用PHP连接Redis应用的指南(redis连接 php)
- 中的应用使用Redis,提升PHP程序效率(redis缓存在php)
- 一个PHP数组应该有多大的分析
- 20个非常有用的PHP类库加速php开发
- 有关JSON以及JSON在PHP中的应用
- PHP使用CURL获取302跳转后的地址实例
- PHP小技巧之函数重载