国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

php繼承的一個(gè)應(yīng)用

2024-05-04 23:16:58
字體:
供稿:網(wǎng)友
這樣我
想到了繼承來解決,前面發(fā)表過一個(gè)會(huì)話類,這下簡單多了,通過登錄來設(shè)置用戶的級(jí)別,$session->get_status()的返回
值如果是0,則表明當(dāng)前用戶并不是博主,因此并不具有刪除,編輯文章的權(quán)限。如果是返回值是1,則表明是博主本人。好
了,廢話少扯。先上代碼

復(fù)制代碼 代碼如下:


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是一個(gè)工廠類,兼靜態(tài)類。 即不需要構(gòu)造對象,它的職責(zé)只是根據(jù)傳入的用戶權(quán)限值,來判斷該返回 operationLimit類 還是 operationUnlimit類 的實(shí)例。
有一些共用的操作,比如閱讀更多,operationUnlimit類繼承了這個(gè)方法,而后又創(chuàng)造了一些新方法,比如返回刪除,更新鏈接的方法。
用法示例

復(fù)制代碼 代碼如下:


$limitObj = LimitFactory::getLimitObject($session->get_status());
echo $limitObj->getReadA('hi');
echo $limitObj->getDelectA('hah');


下面談點(diǎn)無關(guān)的,剛開始當(dāng)我沒有在operationUnlimit類中寫getObject() 靜態(tài)方法,發(fā)現(xiàn)調(diào)用
return operationUnlimit::getObject();
返回的卻是超類的對象,感覺奇怪,我在getObject();方法中用的是self來表示當(dāng)前的類,沒有指明一定要返回超類的對象啊。當(dāng)在子
類中重寫了這個(gè)靜態(tài)方法才OK。后來查了下google,依稀理解,編譯器在剛開始的時(shí)候就把getObject方法和超類綁定在一起,因此
在子類中的調(diào)用依然是返回超類對象。

還有,是否覺得字符串中那么多轉(zhuǎn)義符很難分辨,那么改用
echo <<<Eeeeeee
<a href='foodstory.me/post/{$name}.php' >read more</a>
Eeeeeee;
這樣清爽了很多
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 吐鲁番市| 饶平县| 子洲县| 哈密市| 将乐县| 图们市| 长子县| 贵定县| 巴楚县| 江都市| 淮北市| 信宜市| 吴旗县| 兴安盟| 罗山县| 汾阳市| 隆德县| 黑水县| 砚山县| 通城县| 漳州市| 凤冈县| 前郭尔| 华宁县| 安远县| 玛曲县| 开江县| 潜江市| 苍山县| 遵义市| 沾化县| 竹山县| 泰州市| 吴桥县| 合山市| 台中市| 横峰县| 巧家县| 甘孜县| 邵东县| 龙海市|