本文实例讲述了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
61
62
63
64
65
66
67
68
69
70
71
72
|
<?php //php中的魔术方法 header( 'content-type:text/html;charset=utf-8' ); class Person{ public $name ; protected $sex ; private $salary ; //构造方法,实例化对象是自动触发的方法 public function __construct( $name , $sex , $salary ){ $this ->name= $name ; $this ->sex= $sex ; $this ->salary= $salary ; } //魔术常量__CLASS__ public function getClassName(){ echo __CLASS__ ; } // __FUNCTION__ public function getMethod(){ echo __FUNCTION__ ; } //__tostring() public function __tostring(){ return '对象必须用var_dump()' . '姓名是' . $this ->name; } //__clone() 在使用clone方法的时候会自动调用 public function __clone(){ echo '这个对象是被克隆出来的' ; $this ->name= '李四' ; } //__get() 当调用一个不存在或权限不够的属性自动触发的方法 public function __get( $a ){ echo $a . '属性不存在或权限不够' ; } //__set() 当设置一个不存在或权限不够的属性时自动触发的方法 public function __set( $name , $value ){ echo $name . '为' . $value ; } //__isset() 当在类外判断一个不存在或权限不够的属性时自动触发的方法 public function __isset( $name ){ echo $name . '不能为空' ; } //__call() 当去访问一个权限不够或者不存在的方法的时候,会自动触发的魔术方法 public function __call( $method , $a ){ echo '您请求的方法' . $method . '不存在' ; $this ->getname(); } public function getname(){ echo $this ->name; } } //实例化对象 $person = new Person( '张三' , '男' ,12223); $person1 = new Person( '张三' , '男' ,12223); //$person2=new Person('李四','女',11111); var_dump( $person ); var_dump( $person1 ); exit ; $person ->getClassName(); $person ->getMethod(); //echo $person->name; //echo $person; $person1 = $person ; //同一个对象 //var_dump($person); //var_dump($person1); $person2 = clone $person ; //克隆会产生不一样的对象 //var_dump($person); //var_dump($person2); //echo $person2->name; //$person->salary=10000; //var_dump(isset($person->salary)); //$person->getName(); |
希望本文所述对大家PHP程序设计有所帮助。