zoukankan      html  css  js  c++  java
  • 继承的一个应用

    简介:这是继承的一个应用的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。

    class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=343923' scrolling='no'>

    正在尝试自己写一个博客系统,想当浏览文章的时候,有些操作是只有作者才有权限进行,比如删除,编辑更新文章。这样我

    想到了继承来解决,前面发表过一个会话类,这下简单多了,通过登录来设置用户的级别,$session->get_status()的返回

    值如果是0,则表明当前用户并不是博主,因此并不具有删除,编辑文章的权限。如果是返回值是1,则表明是博主本人。好

    了,废话少扯。先上代码

     1 class operationLimit  
    2 // operating limit. When no user login or is not this user
    3 {
    4 /* for limit the user operat at post.
    5 * @author:xiaoai 8.12 2011
    6 */
    7 static $limitObject;
    8
    9 public function __construct() {}
    10 // when call the function but does not exist
    11 public static function getObject()
    12 {
    13 if( !(self::$limitObject instanceof self))
    14 self::$limitObject = new self;
    15
    16 return self::$limitObject ;
    17 }
    18 protected function setLimit() {}
    19 public function getReadA($postName)
    20 {
    21 return '<a herf=\'http://foodstory.me/post/'.$postname.
    22 '.php\' class=\'readmoreLink\'>readmore</a>';
    23
    24 }
    25 }
    26
    27
    28 class operationUnlimit extends operationLimit
    29 // when is this user
    30 {
    31 public static function getObject()
    32 {
    33 if( !(self::$limitObject instanceof self))
    34 self::$limitObject = new self;
    35
    36 return self::$limitObject ;
    37 }
    38 public function getUpdateA($name)
    39 {
    40 return '<a href=\'http://foodstory.me/post/'.$name.
    41 '.php?do=update\' id=\''.$name.'\' >update</a>';
    42 }
    43 public function getDelectA($name)
    44 {
    45 return '<a href=\'javascript:delectPOST('.$name
    46 .');\' id=\'delectPOST\' >delect</a>';
    47 }
    48 }
    49
    50
    51 class LimitFactory
    52 {
    53 public static function getLimitObject($userStatus)
    54 // $userStatus = $session->get_status();
    55 {
    56 switch ( $userStatus )
    57 {
    58 case 0:
    59 return operationLimit::getObject();
    60 case 1:
    61 return operationUnlimit::getObject();
    62 default:
    63 return limit::getObject();
    64 }
    65 }
    66 }

    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;

    这样清爽了很多

    爱J2EE关注Java迈克尔杰克逊视频站JSON在线工具

    http://biancheng.dnbcw.info/php/343923.html pageNo:5
  • 相关阅读:
    Luogu P4716 【模板】最小树形图
    P4180 严格次小生成树[BJWC2010] Kruskal,倍增
    LA4080/UVa1416 Warfare And Logistics 最短路树
    LA4255/UVa1423 Guess 拓扑排序 并查集
    【算法竞赛入门经典—训练指南】学习笔记(含例题代码与思路)第三章:实用数据结构
    【算法竞赛入门经典—训练指南】学习笔记(含例题代码与思路)第二章:数学基础
    【算法竞赛入门经典—训练指南】学习笔记(含例题代码与思路)第一章:算法设计基础
    P4177 [CEOI2008]order 网络流,最小割,最大权闭合子图
    [USACO5.1] 乐曲主题Musical Themes
    [USACO06DEC] 牛奶模式Milk Patterns
  • 原文地址:https://www.cnblogs.com/ooooo/p/2241957.html
Copyright © 2011-2022 走看看