加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP之十六个魔术方法详解

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

创建对象$Person1且不带任参数

  1. $Person1 = new Person(); 
  2.  
  3. echo $Person1->say(); //输出:我叫:,性别:男,年龄:27  

创建对象$Person2且带参数“小明”

  1. $Person2 = new Person("小明"); 
  2.  
  3. echo $Person2->say(); //输出:我叫:张三,性别:男,年龄:27  

创建对象$Person3且带三个参数

  1. $Person3 = new Person("李四","男",25); 
  2.  
  3. echo $Person3->say(); //输出:我叫:李四,性别:男,年龄:25  

二、__destruct(),类的析构函数

通过上面的讲解,现在我们已经知道了什么叫构造方法。那么与构造方法对应的就是析构方法。

析构方法允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件、释放结果集等。

析构方法是PHP5才引进的新内容。

析造方法的声明格式与构造方法 __construct() 比较类似,也是以两个下划线开始的方法 __destruct() ,这种析构方法名称也是固定的。

1、 析构方法的声明格式

  1. function __destruct() 
  2.  
  3.  
  4.   //方法体 
  5.  
  6. }  

注意:析构函数不能带有任何参数。

2、 析构方法的作用

一般来说,析构方法在PHP中并不是很常用,它属类中可选择的一部分,通常用来完成一些在对象销毁前的清理任务。

举例演示,如下:

  1. <?php 
  2. class Person{      
  3.                                                          
  4.     public $name;          
  5.     public $age;          
  6.     public $sex;          
  7.                                                                      
  8.     public function __construct($name="", $sex="男", $age=22) 
  9.     {    
  10.         $this->name = $name; 
  11.         $this->sex  = $sex; 
  12.         $this->age  = $age; 
  13.     } 
  14.      
  15.     /** 
  16.      * say 说话方法 
  17.      */ 
  18.     public function say() 
  19.     {   
  20.         echo "我叫:".$this->name.",性别:".$this->sex.",年龄:".$this->age; 
  21.     }     
  22.      
  23.     /** 
  24.      * 声明一个析构方法 
  25.      */ 
  26.     public function __destruct() 
  27.     { 
  28.             echo "我觉得我还可以再抢救一下,我的名字叫".$this->name; 
  29.     } 
  30.  
  31. $Person = new Person("小明"); 
  32. unset($Person); //销毁上面创建的对象$Person  

上面的程序运行时输出:

我觉得我还可以再抢救一下,我的名字叫小明

三、 __call(),在对象中调用一个不可访问方法时调用。

该方法有两个参数,第一个参数 $function_name 会自动接收不存在的方法名,第二个 $arguments 则以数组的方式接收不存在方法的多个参数。

(编辑:PHP编程网 - 黄冈站长网)

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

热点阅读