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魔术方法以及关于独立实例与相连实例的全面讲解全部内容了,希望大家多多支持服务器之家~