<?php
/*
__get/ __set
用来将对象的属性进行接管
__call/ __callStatic
控制php对象的方法调用
__toString
将php对象转换成字符串
__invoke
将对象当作函数用会回调
**/
namespace MagicMethod;
class Mgc {
protected $array = [];
// __set, __get , 用来将对象的属性进行接管
public function __set($key, $value)
{
$this->array[$key] = $value;
echo '成功生成: key:'.$key.', value:'.$value."\n";
}
public function __get($key)
{
if(isset($this->array[$key]))
{
echo $this->array[$key];
}else{
echo 'key: '.$key." ,并不存在无法获取\n";
}
}
// __call, __callStatic 接管php对象的不存在的方法调用
public function __call($function, $params)
{
var_dump($function, $params);
}
public static function __callStatic($function, $params)
{
var_dump($function, $params);
}
// __toString 将php对象转换成字符串
public function __toString()
{
return __CLASS__;
}
// __invoke 接管把对象当作函数
public function __invoke($param)
{
var_dump($param);
}
}
$obj = new Mgc();
/*
echo $obj->name;
echo $obj->name = 'Mr.silvercell';
echo $obj->name;
*/
/*
$obj->test('param1','value1');
Mgc::testing('paramX', 'valueX','valueY');
*/
/*
echo $obj;
*/
/*
$obj(123);
*/
php面向对象【四个经典PHP魔术方法】
本文深入介绍了PHP中的魔术方法,包括__get和__set用于属性接管,__call与__callStatic控制对象方法调用,__toString实现对象转字符串,以及__invoke使对象能够作为函数调用。通过具体实例展示了这些魔术方法的使用方式。
2153

被折叠的 条评论
为什么被折叠?



