Rumah > pembangunan bahagian belakang > tutorial php > php如何继承一个应用?

php如何继承一个应用?

伊谢尔伦
Lepaskan: 2023-03-12 06:40:02
asal
1120 orang telah melayarinya

正在尝试自己写一个博客系统,想当浏览文章的时候,有些操作是只有作者才有权限进行,比如删除,编辑更新文章。想到了继承来解决,前面发表过一个会话类,这下简单多了,通过登录来设置用户的级别,$session->get_status()的返回 值如果是0,则表明当前用户并不是博主,因此并不具有删除,编辑文章的权限。如果是返回值是1,则表明是博主本人。好 

了,废话少扯。先上代码 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

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 &#39;<a herf=\&#39;http://foodstory.me/post/&#39;.$postname.

&#39;.php\&#39; class=\&#39;readmoreLink\&#39;>readmore</a>&#39;;

}

}

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 &#39;<a href=\&#39;http://foodstory.me/post/&#39;.$name.

&#39;.php?do=update\&#39; id=\&#39;&#39;.$name.&#39;\&#39; >update</a>&#39;;

}

public function getDelectA($name)

{

return &#39;<a href=\&#39;

javascript

:delectPOST(&#39;.$name

.&#39;);\&#39; id=\&#39;delectPOST\&#39; >delect</a>&#39;;

}

}

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();

}

}

}

Salin selepas log masuk

LimitFactory是一个工厂类,兼静态类。 即不需要构造对象,它的职责只是根据传入的用户权限值,来判断该返回 operationLimit类 还是 operationUnlimit类 的实例。
有一些共用的操作,比如阅读更多,operationUnlimit类继承了这个方法,而后又创造了一些新方法,比如返回删除,更新链接的方法。
用法示例

1

2

3

$limitObj = LimitFactory::getLimitObject($session->get_status());

echo $limitObj->getReadA(&#39;hi&#39;);

echo $limitObj->getDelectA(&#39;hah&#39;);

Salin selepas log masuk

下面谈点无关的,刚开始当我没有在operationUnlimit类中写getObject() 静态方法,发现调用
return operationUnlimit::getObject();
返回的却是超类的对象,感觉奇怪,我在getObject();方法中用的是self来表示当前的类,没有指明一定要返回超类的对象啊。当在子
类中重写了这个静态方法才OK。后来查了下google,依稀理解,编译器在刚开始的时候就把getObject方法和超类绑定在一起,因此
在子类中的调用依然是返回超类对象。

还有,是否觉得字符串中那么多转义符很难分辨,那么改用
echo <<read more
Eeeeeee;
这样清爽了很多。    

Atas ialah kandungan terperinci php如何继承一个应用?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan