欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP创建对象的6种方式

程序员文章站 2022-05-31 21:08:19
创建对象实例: 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 5 ......

PHP创建对象的6种方式

 

创建对象实例:

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

63

64

65

66

<?php

/**

 * php创建对象的六种方式

 */

class person{

  private $name = 'bruce';

  public function getname(){

    return $this->name;

  }

  public static function getobjbyself(){

    return new self();

  }

  //动态延迟绑定,能识别调用者

  public static function getobjcbystatic(){

    return new static();

  }

}

//person子类 teacher

class teacher extends person{

  public static function getobjbyparent(){

    return new parent();

  }

}

 

//1、new 类名();创建对象

$obj1 = new person();//等价于写法 $obj1 = new person;

echo '类名:'.get_class($obj1).'<br>';

echo $obj1->getname().'<hr>';

 

//2、将类名字符串赋值给一个变量,通过变量创建

$clsname = 'person';

$obj2 = new $clsname();

echo '类名:'.get_class($obj2).'<br>';

echo $obj2->getname().'<hr>';

 

//3、通过对象实例创建对象

$obj3 = new $obj2();

echo '类名:'.get_class($obj3).'<br>';

echo $obj3->getname().'<hr>';

 

//4、通过 new self()

//$obj4 = (new $obj3())->getobjbyself();

$obj4 = person::getobjbyself();

echo '类名:'.get_class($obj4).'<br>';

echo $obj4->getname().'<hr>';

 

//5、通过 new parent()

$obj5= teacher::getobjbyparent();

echo '类名:'.get_class($obj5).'<br>';

echo $obj5->getname().'<hr>';

 

//6、通过 new static();

$obj6 = person::getobjcbystatic();

echo '类名:'.get_class($obj6).'<br>';//类名:person

echo $obj6->getname().'<hr>'; //bruce

//当用子类去调用时候,发现static自动识别当前调用者(静态延迟绑定),返回当前调用者对象

$obj7 = teacher::getobjcbystatic();

echo '类名:'.get_class($obj7).'<br>';//类名:teacher

echo $obj7->getname().'<hr>';//bruce

$obj8 = person::getobjbyself();

echo '类名:'.get_class($obj8).'<br>';//类名:person

echo $obj8->getname().'<hr>';

//new self()在子类中调用依旧返回原来父类的绑定

$obj9 = teacher::getobjbyself();

echo '类名:'.get_class($obj9).'<br>';//类名:person

echo $obj9->getname().'<hr>';

运行结果:

PHP创建对象的6种方式