代码拉取完成,页面将自动刷新
<?php
/**
* 魔术方法
* 魔术方法 作用
* __construct() 实例化类时自动调用
* __destruct() 类对象使用结束时自动调用
* __set() 在给未定义的属性赋值时自动调用
* __get() 调用未定义的属性时自动调用
* __isset() 使用 isset() 或 empty() 函数时自动调用
* __unset() 使用 unset() 时自动调用
* __sleep() 使用 serialize 序列化时自动调用
* __wakeup() 使用 unserialize 反序列化时自动调用
* __call() 调用一个不存在的方法时自动调用
* __callStatic() 调用一个不存在的静态方法时自动调用
* __toString() 把对象转换成字符串时自动调用
* __invoke() 当尝试把对象当方法调用时自动调用
* __set_state() 当使用 var_export() 函数时自动调用,接受一个数组参数
* __clone() 当使用 clone 复制一个对象时自动调用
* __debugInfo() 使用 var_dump() 打印对象信息时自动调用
*/
class MagicFunc
{
private $_config = [
'host' => '127.0.0.1',
'port' => 3306,
'user' => 'root',
'passwd' => 'root'
];
public function __construct($config = [])
{
if ($config) {
$this->_config = array_merge($this->_config, $config);
}
}
public function __get($name)
{
return $this->_config[$name] ?? '未定义属性';
}
public function __set($name, $value)
{
if (isset($this->_config[$name])) {
$this->_config[$name] = $value;
}
}
public function __toString()
{
return 'MagicFunc is toString' . PHP_EOL;
}
public function __debugInfo()
{
return [
'class' => 'MagicFunc',
];
}
public function __invoke()
{
echo 'invoke is here' . PHP_EOL;
}
public function __call($name, $arguments)
{
echo '__call Calling: ' . $name . '</br>';
echo '__call arguments: ';
print_r($arguments);
echo '</br>';
}
public static function __callStatic($name, $arguments)
{
echo '__callStatic Calling: ' . $name . '</br>';
echo '__callStatic arguments: ';
print_r($arguments);
echo '</br>';
}
public function __clone()
{
echo '对象克隆成功' . PHP_EOL;
}
public function __destruct()
{
echo 'MagicFunc destruct' . PHP_EOL;
}
public function index()
{
# 调用 __get()
echo "host:" . $this->host . PHP_EOL;
echo "port:" . $this->port . PHP_EOL;
}
}
$config = [
'host' => '129.0.0.1',
'port' => 8306
];
$magicfunc = new MagicFunc($config);
echo $magicfunc; # 调用 __toString()
echo $magicfunc(); # 调用 __invoke()
$magicfunc->index();
$magicfunc->host = '130.0.0.1'; # 调用 __set()
echo $magicfunc->host . PHP_EOL;
$magicfunc->test('n100'); # 调用 __call()
MagicFunc::test1('n200'); # 调用 __callStatic()
var_dump($magicfunc); # 调用 __debugInfo()
$obj2 = clone $magicfunc; # 调用 __clone()
var_dump($obj2);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。