加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP之十六个把戏要领详解

发布时间:2016-10-29 23:47:45 所属栏目:PHP教程 来源:segmentfault
导读:副标题#e# 前言 PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。 魔术方法包括: __construct(),,类的构造函数 __destruct(),类的析构函数 __call(),在对象中调用一个不可访问方法时调用 __callSt

直接上代码:

  1. <?php 
  2. class Person 
  3.     public $sex; 
  4.     public $name; 
  5.     public $age; 
  6.  
  7.     public function __construct($name="",  $age=25, $sex='男') 
  8.     { 
  9.         $this->name = $name; 
  10.         $this->age  = $age; 
  11.         $this->sex  = $sex; 
  12.     } 
  13.  
  14.     public function __invoke() { 
  15.         echo '这可是一个对象哦'; 
  16.     } 
  17.  
  18.  
  19. $person = new Person('小明'); // 初始赋值 
  20. $person();  

查看运行结果:

  1. 这可是一个对象哦 

当然,如果你执意要将对象当函数方法使用,那么会得到下面结果:

  1. Fatal error: Function name must be a string in D:phpStudyWWWtestindex.php on line 18 

十三、 __set_state(),调用var_export()导出类时,此静态方法会被调用。

作用:

自 PHP 5.1.0 起,当调用 var_export() 导出类时,此静态方法会被自动调用。

参数:

本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性。

下面我们先来看看在没有加 __set_state() 情况按下,代码及运行结果如何:

上代码:

  1. <?php 
  2. class Person 
  3.     public $sex; 
  4.     public $name; 
  5.     public $age; 
  6.  
  7.     public function __construct($name="",  $age=25, $sex='男') 
  8.     { 
  9.         $this->name = $name; 
  10.         $this->age  = $age; 
  11.         $this->sex  = $sex; 
  12.     } 
  13.  
  14.  
  15. $person = new Person('小明'); // 初始赋值 
  16. var_export($person);  

看结果:

  1. Person::__set_state(array( 'sex' => '男', 'name' => '小明', 'age' => 25, )) 

很明显,将对象中的属性都打印出来了

加了 __set_state() 之后:

继续上代码:

  1. <?php 
  2. class Person 
  3.     public $sex; 
  4.     public $name; 
  5.     public $age; 
  6.  
  7.     public function __construct($name="",  $age=25, $sex='男') 
  8.     { 
  9.         $this->name = $name; 
  10.         $this->age  = $age; 
  11.         $this->sex  = $sex; 
  12.     } 
  13.  
  14.     public static function __set_state($an_array) 
  15.     { 
  16.         $a = new Person(); 
  17.         $a->name = $an_array['name']; 
  18.         return $a; 
  19.     } 
  20.  
  21.  
  22. $person = new Person('小明'); // 初始赋值 
  23. $person->name = '小红'; 
  24. var_export($person);  

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读