<?php
namespace magic\sub;
class magic
{
const foo = 1;
private $data = [];
private $_name = '';
public function __construct($name)
{
$this->_name = $name;
}
public function __destruct()
{
echo '__destruct' . "<br/>";
}
public function __get($name)
{
echo '__get' . "<br/>";
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
$trace = debug_backtrace();
trigger_error(
'Undefined property via __get(): ' . $name .
' in ' . $trace[0]['file'] .
' on line ' . $trace[0]['line'],
E_USER_NOTICE);
return null;
}
public function __set($name, $value)
{
echo '__set' . "<br/>";
$this->data[$name] = $value;
}
public function __isset($name)
{
echo '__isset' . "<br/>";
return isset($this->data[$name]);
}
public function __unset($name)
{
echo '__unset' . "<br/>";
unset($this->data[$name]);
}
public function __call($name, $arguments)
{
$className = '_' . $name;
$this->$className();
}
private function _getName()
{
echo 'call _getName' . "<br/>";
}
public static function __callStatic($name, $arguments)
{
echo "Calling static method '$name' "
. implode(', ', $arguments). "\n";
}
public function __sleep()
{
return array('server', 'username', 'password', 'db');
}
public function __wakeup()
{
$this->connect();
}
public function __toString()
{
echo 'call __toString' . "<br/>";
return $this->_name . "<br/>";
}
function __invoke($x) {
var_dump($x);
}
public function __debugInfo() {
return [
'propSquared' => $this->_name,
];
}
}
调用文件
<?php
namespace magic;
require_once(
'magic.class.php');
$mag = new magic(
'jack');
/*var_dump(
$mag->a);
echo "<br/>";
unset(
$mag->a);
var_dump(isset(
$mag->a));
echo "<br/>";*/
/*
$mag->getName();
echo "<br/>";
magic::getName();
echo "<br/>";*/
//测试__toString
//
echo $mag;
//
$mag(
5);
//
echo "<br/>";
// var_dump(new magic(
'jack'));
//
echo "<br/>";
//魔术常量
//
echo __LINE__;
//
echo __FILE__;
//
echo __DIR__;
//
echo __NAMESPACE__;
转载请注明原文地址: https://www.6miu.com/read-24949.html