本文实例讲述了PHP创建对象的六种方式。分享给大家供大家参考,具体如下:
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
|
<?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程序设计有所帮助。
原文链接:https://blog.csdn.net/Alen_xiaoxin/article/details/84336801