日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

怎么使用继承的一个实例

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么使用继承的一个实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正在嘗試自己寫一個博客系統,想當瀏覽文章的時候,有些操作是只有作者才有權限進行,比如刪除,編輯更新文章。這樣我

想到了繼承來解決,前面發表過一個會話類,這下簡單多了,通過登錄來設置用戶的級別,$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 publicfunction __construct() {}
10 // when call the function but does not exist
11 publicstaticfunction getObject()
12 {
13 if( !(self::$limitObject instanceof self))
14 self::$limitObject=new self;
15
16 return self::$limitObject ;
17 }
18 protectedfunction setLimit() {}
19 publicfunction 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 publicstaticfunction getObject()
32 {
33 if( !(self::$limitObject instanceof self))
34 self::$limitObject=new self;
35
36 return self::$limitObject ;
37 }
38 publicfunction getUpdateA($name)
39 {
40 return'<a href=\'http://foodstory.me/post/'.$name.
41 '.php?do=update\' id=\''.$name.'\' >update</a>';
42 }
43 publicfunction getDelectA($name)
44 {
45 return'<a href=\'javascript:delectPOST('.$name
46 .');\' id=\'delectPOST\' >delect</a>';
47 }
48 }
49
50
51 class LimitFactory
52 {
53 publicstaticfunction getLimitObject($userStatus)
54 // $userStatus = $session->get_status();
55 {
56 switch ( $userStatus )
57 {
58 case0:
59 return operationLimit::getObject();
60 case1:
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;

這樣清爽了很多

轉載于:https://www.cnblogs.com/in-loading/archive/2012/01/10/2318352.html

總結

以上是生活随笔為你收集整理的怎么使用继承的一个实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。