教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 php中构造函数与析构函数详解

php中构造函数与析构函数详解

发布时间:2016-10-26   编辑:jiaochengji.com
教程集为您提供php中构造函数与析构函数详解等资源,欢迎您收藏本站,我们将为您提供最新的php中构造函数与析构函数详解资源
在php中构造函数与析构函数都是使用在类中的,下面我来给大家详细介绍关于在php类中使用构造函数与析构函数的方法,有需要了解的朋友可参考参考。

析构函数

php析构函数的作用刚好和构造函数相反,构造函数是在对象实例化时自动执行,而析构函数在对象被销毁时自动执行。

默认情况下,php仅释放对象属性所占用的内存,并不销毁对象相关的资源,而利用析构函数在使用一个对象之后执行代码来清除内存,并将对象从内存中销毁。析构函数__destruct()结构形式如下:

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy1177')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy1177>
 function __destruct(){
    /* class initialization code */
}

析构函数是由系统自动调用,不能带参数。

实例:

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy7767')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy7767>

<?php
 class des{
  function __destruct(){
   echo "运行结束,执行析构函数";
  }
 }
 $p=new des(); /* 实例化类 */
 $sum=0;
 for($i=0;$i<10;$i ){
  $sum=$sum $i;
  echo $sum ."<br>";
 }
?>

析构函数的调用

php如何调用析构函数?当php脚本不再与对象相关时将调用析构函数。如果要明确地销毁一个对象调用析构函数,可以给指向对象的变量不分配任何值,通常将变量赋值为NULL或者用unset()函数。

实例:

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy7085')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy7085>

<?php
 class des{
  function __destruct(){
   echo "对象被销毁,执行析构函数<br>";
  }
 }
 $p=new des(); /* 实例化类 */
 echo "程序开始<br>";
 unset($p); /* 销毁变量$p */
 echo "程序结束";
?>

构造函数

我们在使用类的过程中,有时需要立即为实例化对象的多个字段父子,如果通过手工,会带来很多不可预测的问题,而如果在对象创建过程中自动执行,则会带来很多方便。

php构造函数作用就是当类被实例化时,会自动执行的函数,又称为构造函数。

构造函数的声明和其它函数一样,知识构造函数的名称是“__construct”固定的名称,其结构形式如下:

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy6467')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy6467>

function __construct([argument1,argument2,argument3]){
    /* class initialization code */
}

实例:

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy3762')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy3762>

<?php
 class user{
  public $name;
  private $password;
  private $login;
  public function __construct($name,$password){
   $this->name=$name;
   $this->password=$password;
   $this->login=time();
  }
  function getlogin(){
   return(date('M d,Y',$this->login));
  }
 }
 $user=new user('Marry','888888');
 echo "用户名: ". $user->name. "<br>";
 print("访问时间". $user->getlogin());
?>

调用父类构造函数

构造函数可以被子类调用,php调用父类构造函数时必须使用parent关键字,否则不会自动调用。

实例:

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy5639')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy5639>

<?php
 class task1{
  public function __construct(){
   echo "today is Monday". "<br>";
  }
 }
 class task2 extends task1{
  function __construct(){
   parent::__construct(); /* 调用父类构造函数 */
   echo "I must work!";
  }
 }
 new task2;
?>

您可能感兴趣的文章:
php构造函数与析构函数初探
php构造函数的小例子
php5构造函数与析构函数实例
php构造函数和析构函数学习
php构造函数与析构函数
php 构造函数与析构函数应用实例
php中构造函数与析构函数详解
php构造函数与析构函数实例分析
php构造函数与析构函数实例详解
php析构函数的小例子

[关闭]
~ ~