{"id":233,"title":"php\u9b54\u672f\u65b9\u6cd5","good":0,"bad":0,"hit":2366,"created_at":"2016-05-21 15:34:49","content":"
<?php
\/*
* php\u9b54\u672f\u65b9\u6cd5
*\/
class test{
public $name='hr';
private $rate;\/\/\u6c47\u7387
public $content;
public function __construct($string=null)
{
$this->content=$string;
echo '\u5bf9\u8c61\u88ab\u5b9e\u4f8b\u5316\u524d\u8c03\u7528__construct()<hr\/>';
}
public function __toString()
{
return '\u5f53\u5bf9\u50cf\u88ab\u5f53\u505a\u5b57\u7b26\u4e32\u65f6\uff0c\u81ea\u52a8\u8c03\u7528___toString\u65b9\u6cd5<hr\/>';\/\/\u8981\u7528return \u8fd4\u56de
}
public function __invoke()
{
echo '\u5f53\u5bf9\u8c61\u88ab\u5f53\u6210\u65b9\u6cd5\u65f6\uff0c\u81ea\u52a8\u8c03\u7528__invoke\u65b9\u6cd5<hr\/>';
}
public function __call($name, $arguments)
{
echo '\u5f53\u5bf9\u8c61\u8c03\u7528\u4e00\u4e2a\u4e0d\u5b58\u5728\u7684\u65b9\u6cd5\u65f6\uff0c\u4f1a\u81ea\u52a8\u8c03\u7528__call\u65b9\u6cd5<br\/>';
echo '\u5f53\u524d\u8c03\u7528\u7684\u65b9\u6cd5\u540d\u662f'.$name.'<br\/>';
echo '\u4f20\u9012\u8fc7\u6765\u7684\u53c2\u6570\u662f:'.print_r($arguments);
echo '<hr\/>';
}
public static function __callStatic($name, $arguments)
{
echo '\u5f53\u9759\u6001\u8c03\u7528\u4e00\u4e2a\u4e0d\u5b58\u5728\u7684\u65b9\u6cd5\u65f6\uff0c\u4f1a\u81ea\u52a8\u8c03\u7528__callSatic\u65b9\u6cd5,\u6ce8\u610f\u8fd9\u4e2a\u65b9\u6cd5\u8981\u7528static\u4fee\u9970<br\/>';
echo '\u5f53\u524d\u8c03\u7528\u7684\u65b9\u6cd5\u540d\u662f'.$name.'<br\/>';
echo '\u4f20\u9012\u8fc7\u6765\u7684\u53c2\u6570\u662f:'.print_r($arguments);
}
public function __get($name)
{
return '<hr\/>\u8bfb\u53d6\u4e0d\u53ef\u8bbf\u95ee\u5c5e\u6027\u7684\u503c\u65f6\u4f1a\u81ea\u52a8\u8c03\u7528__get\u65b9\u6cd5';
}
public function __set($name, $value)
{
echo '<hr\/>\u5728\u7ed9\u4e0d\u53ef\u8bbf\u95ee\u5c5e\u6027\u8d4b\u503c\u65f6\uff0c\u5f53\u524d\u8981\u5c06'.$name.'\u8bbe\u7f6e\u4e3a'.$value;
}
public function __isset($name)
{
echo '<hr\/>\u5f53\u5bf9\u4e0d\u53ef\u8bbf\u95ee\u5c5e\u6027\u8c03\u7528 isset() \u6216 empty() \u65f6\uff0c__isset() \u4f1a\u88ab\u8c03\u7528'.$name;
}
public function __unset($name)
{
echo '<hr\/>\u5f53\u5bf9\u4e0d\u53ef\u8bbf\u95ee\u5c5e\u6027\u8c03\u7528 unset() \u65f6\uff0c__unset() \u4f1a\u88ab\u8c03\u7528'.$name;
}
public function __clone()
{
echo '<hr\/>\u5982\u679c\u6709\u4eba\u514b\u9686\u6211\uff0c\u5c06$name\u7684\u503c\u4ece'.$this->name.'\u6539\u4e3anoName';
$this->name='noName';
}
public function __sleep()
{
$this->content='\u8fd9\u662f\u4e2a\u79d8\u5bc6';
return array('content');
}
public function __wakeup()
{
$this->content='\u53ef\u4ee5\u770b\u6211\u7684\u79d8\u5bc6';
}
public function __destruct()
{
echo '<hr\/>\u5bf9\u8c61\u7684\u6240\u6709\u5f15\u7528\u90fd\u88ab\u5220\u9664\u6216\u8005\u5bf9\u8c61\u88ab\u9500\u6bc1\u65f6\u8c03\u7528__destruct()';
}
}
$obj=new test('\u6211\u7231\u5c0f\u7ea2');
echo $obj;\/\/\u8c03\u7528__toString()\u65b9\u6cd5
echo $obj();\/\/\u8c03\u7528__invoke()\u65b9\u6cd5
$obj->notExistFunction("name","age");\/\/\u5b9e\u4f8b\u5316\u8c03\u7528\u4e00\u4e2a\u4e0d\u5b58\u5728\u7684\u65b9\u6cd5\uff0c\u81ea\u52a8\u8c03\u7528__call
test::notExistFunction("sex","birthday");\/\/\u9759\u6001\u8c03\u7528\u4e00\u4e2a\u4e0d\u5b58\u5728\u7684\u65b9\u6cd5\uff0c\u81ea\u52a8\u8c03\u7528__callStatic
echo $obj->notExistProperty;\/\/__get\u65b9\u6cd5
$obj->rate=1;\/\/__set
isset($obj->notExistPproperty);\/\/__isset
empty($obj->rate);\/\/__isset()
unset($obj->rate);\/\/__unset();
$obj2=clone $obj;\/\/__clone ,\u6b64\u65f6 $obj2->name\u7684\u503c\u4e3a noName ,\u8c8c\u4f3c\u8fd8\u8c03\u7528\u4e86\u4e00\u6b21__destruct\u65b9\u6cd5
echo '<hr\/>'.serialize($obj).'<br\/>';\/\/serialize\u5e8f\u5217\u5316\u524d\u5148\u8c03\u7528__sleep()
echo '<pre>';
echo print_r(unserialize(serialize($obj)));\/\/unserialize\u53cd\u5e8f\u5217\u5316\u524d\u5148\u8c03\u7528__wakeup(),\u8c8c\u4f3c\u4e5f\u8c03\u7528\u4e86\u4e00\u6b21__destruct()
echo '<\/pre>';<\/p>
<\/p>
<\/p>
\u8fd0\u884c\u7ed3\u679c\uff1a<\/p>
<\/p>
<\/p>"}