<?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);
*/
11-12
131
