本文实例讲述了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程序设计有所帮助。