php 魔术方法
Php 模式方法 | 描述(需要在类中定义魔术方法) |
|
__construct() |
|
|
__destruct() |
|
|
__tostring() | 当对象被当作String使用时,这个方法会被自动调用。如: Public function __tostring(){ Return “这是类的魔术方法__tostring”; } Echo $myObj;
|
|
__invoke() | 当对象被当成方法是,这个方法会自动被调用。如: Public function __invoke($x){ Return “这是类的魔术方法__tostring”; }
$myObj(4); |
|
__call() | 当对象访问不存在的方法名称是,__call()方法会自动调用 //第一个参数是方法名,第二个参数是参数数组 Public function __call($name,$arguments){ Echo “调用”.$name.”方法”.”参数”.implode(“,”,$arguments).”<br>”; }
| 这两个方法在php里面也被称为方法的重载(overloading,不同于overwrite)通过这2个方法,同一个方法的名称的调用可以对应不同的方法实现。 |
__callstatic() | __当对象访问不存在的静态方法名称是,__callstatic()方法会被自动调用(需要定义为static方法) //第一个参数是方法名,第二个参数是参数数组 Public static function __callStatic($name,$arguments){ Echo “调用静态static”.$name.”方法”.”参数”.implode(“,”,$arguments).”<br>”; }
| |
__get() | 读取不可访问属性的值时,__get()会被调用
Public function __get($name){ Return “getting 属性”.$name; }
| 所谓不可访问熟悉,实际上就是在调用某个属性时发现这个熟悉没有被定义(或private)这个时候不同的操作会触发不同的魔术方法。 这几个方法也被称为属性重载的魔术方法。 |
__set() | 在给不可访问属性赋值时,__set()会被调用 //第一个参数属性名;第二个参数属性值 Public function __get($name,$value){ Echo “setting 属性”.$name.”=”.$value.”<br>”;
}
| |
__isset() | 当对不可访问属性调用isset()或empty()时,__isset()会被调用。 Public function __isset($name){ Echo “__isset invoked<br>”; Return false;
}
| |
__unset() | 当对不可访问属性调用unset()时,__unset()会被调用。 | |
__clone() | 对象的复制(copy),而不是直接赋值 $jam1 =clone $jam; 而不是 $jam1=$jam;
|
|