从php5以后的版本,类就可以使用魔术方法了。php规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开 头,除非是为了重载已有的魔术方法。
目前php已有的魔术方法有 __construct,__destruct,__call,__get,__set,__isset,__unset,__sleep,__wakeup,__toString,__set_state 和 __clone。
本文
慢慢长寻夜,明月高空挂
__isset() – 在对类中属性或者非类中属性使用isset()方法的时候如果没有或者非公有属性,则自动执行__isset()的方法
__unset() - 在对类中属性或者非类中属性使用unset()方法的时候如果没有或者非公有属性,则自动执行__unset()的方法
<?php /** * 针对类中的魔术方法 __isset() 和 __unset() 的例子 */class Example { public $public; protected $protected; private $private; public function __construct(){ $this->public = 'pub'; $this->protected = 'pro'; $this->private = 'pri'; } public function __isset($var){ echo '这里通过__isset()方法查看属性名为 '.$var."\n"; } public function __unset($var){ echo '这里通过__unset()方法要销毁属性名为 '.$var."\n"; }}$exa = new Example;echo '<pre class="prettyprint linenums">';var_dump(isset($exa->public));echo "\n";var_dump(isset($exa->protected));echo "\n";var_dump(isset($exa->private));echo "\n";var_dump(isset($exa->noVar));echo "\n";echo '<hr />';unset($exa->public);var_dump($exa);echo "\n";unset($exa->protected);echo "\n";unset($exa->private);echo "\n";unset($exa->noVar);echo "\n";
结果如下:
bool(<span>true</span><span>)这里通过__isset()方法查看属性名为 protectedbool(</span><span>false</span><span>)这里通过__isset()方法查看属性名为 privatebool(</span><span>false</span><span>)这里通过__isset()方法查看属性名为 noVarbool(</span><span>false</span><span>)------------------------------------------------------------------------------ </span><span>object</span>(Example)#<span>1</span> (<span>2</span><span>) { [</span><span>"</span><span>protected:protected"]=></span> <span>string</span>(<span>3</span>) <span>"</span><span>pro"</span> [<span>"</span><span>private:private"]=></span> <span>string</span>(<span>3</span>) <span>"</span><span>pri"</span> <span>}这里通过__unset()方法要销毁属性名为 protected这里通过__unset()方法要销毁属性名为 private这里通过__unset()方法要销毁属性名为 noVar</span>
@本文来*源gaodai#ma#com搞*!代#%^码$网* 以上就介绍了PHP 魔术方法:__isset和__unset,包括了PHP 魔术方法方面的内容,希望对PHP教程有兴趣的朋友有所帮助。