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
|
<?php //魔术方法 //当包含多个类 //1.自动装载类的魔术方法__autoload() function __autoload( $classname ){ if (isset( $classname )){ require_once $classname . '.class.php' ; } } /* $computer1=new Computer(); $computer1->addList('dalisng',234); echo $computer1; */ //__call()屏蔽调用方法时候产生的错误,当我们调用一个不存在的方法时候,会自动调用__call()方法。 //独立实例,两个实例各自建立,互不干涉 $computer2 = new Computer(); echo $computer2 ->name; echo "<br/>" ; $computer3 = new Computer(); echo $computer3 ->name; echo "<br/>" ; $computer3 ->name= "大亮" ; echo '$computer3->name:' . $computer3 ->name; echo "<br/>" ; echo '$computer2->name:' . $computer2 ->name; echo "<br/>" ; echo "<hr/>" ; //相连实例,即 用等于号来开辟一个新的实例,此时两个实例共同指向一个内存地址,一损俱损,一荣俱荣 $computer4 = new Computer(); echo '$computer4->name:' . $computer4 ->name; echo "<br/>" ; $computer5 = $computer4 ; echo '$computer5->name:' . $computer5 ->name; echo "<br/>" ; $computer4 ->name= "大亮" ; echo '$computer4->name:' . $computer4 ->name; echo "<br/>" ; echo '$computer5->name:' . $computer5 ->name; echo "<br/>" ; echo "<hr/>" ; //克隆__clone,克隆的新实例和被克隆的实例是两个相互独立的个体,虽然属性值相同,但是属性存放的地址不同,所以克隆后你我生死无关 $computer6 = new Computer(); echo '$computer6->name:' . $computer6 ->name; echo "<br/>" ; $computer7 = clone $computer6 ; echo '$computer7->name:' . $computer7 ->name; echo "<br/>" ; $computer6 ->name= "克隆" ; echo '$computer6->name:' . $computer6 ->name; echo "<br/>" ; echo '$computer7->name:' . $computer7 ->name; echo "<br/>" ; |
Computer.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php class Computer{ public $name = "1234" ; function __construct(){ echo "you are right!" ; } function __call( $methodName , $argsList ){ //当方法不存在的时候会自动调用此方法,$argsList是相应的参数 echo $methodName . "()方法不存在!" ; echo "<pre>" ; print_r( $argsList ); echo "</pre>" ; } private function __toString(){ //当用户输出不存在的字符串时候,该方法自动调用 比如echo 对象名 echo "我是对象的字符串!" ; } } |
以上就是小编为大家带来的PHP魔术方法以及关于独立实例与相连实例的全面讲解全部内容了,希望大家多多支持服务器之家~