PHP魔术方法__ISSET、__UNSET使用实例

2018-09-22 15:26

阅读:474

  __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>;
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(true)

  这里通过__isset()方法查看属性名为 protected

  bool(false)

  这里通过__isset()方法查看属性名为 private

  bool(false)

  这里通过__isset()方法查看属性名为 noVar

  bool(false)
复制代码 代码如下:
object(Example)#1 (2) {
[protected:protected]=>
string(3) pro
[private:private]=>
string(3) pri
}

  这里通过__unset()方法要销毁属性名为 protected

  这里通过__unset()方法要销毁属性名为 private

  这里通过__unset()方法要销毁属性名为 noVar


评论


亲,登录后才可以留言!