php基础知识:类与对象(3) 构造函数和析构函数


Posted in PHP onDecember 13, 2006

构造函数
PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。 
注意: 
如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。(??和其他语言明显不同??)

例10.8.使用新标准的构造函数
class BaseClass {
  function __construct() {
      print "In BaseClass constructor\n";
  }
}

class SubClass extends BaseClass {
  function __construct() {
      parent::__construct();
      print "In SubClass constructor\n";
  }
}
$obj = new BaseClass();
$obj = new SubClass();

为了实现向后兼容性,如果 PHP 5 在类中找不到 __construct() 函数,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。因此唯一会产生兼容性问题的情况是:类中已有一个名为 __construct() 的方法,但它却又不是构造函数。 

析构函数
PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。 
例10.9.析构函数示例
class MyDestructableClass {
  function __construct() {
      print "In constructor\n";
      $this->name = "MyDestructableClass";
  }

  function __destruct() {
      print "Destroying " . $this->name . "\n";
  }
}
$obj = new MyDestructableClass();
和构造函数一样,父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,必须在子类的析构函数体中显式调用 parent::__destruct()。 (??和其他语言明显不同??)
注意: 
析构函数在脚本关闭时调用,此时所有的头信息已经发出。 
注意: 
试图在析构函数中抛出一个异常会导致致命错误。

PHP 相关文章推荐
利用discuz实现PHP大文件上传应用实例代码
Nov 14 PHP
简单的php数据库操作类代码(增,删,改,查)
Apr 08 PHP
如何让搜索引擎抓取AJAX内容解决方案
Aug 25 PHP
PHP中类属性与类静态变量的访问方法示例
Jul 13 PHP
基于PHP微信红包的算法探讨
Jul 21 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
PHP中CheckBox多选框上传失败的代码写法
Feb 13 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
Jul 03 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
分析php://output和php://stdout的区别
May 06 PHP
php pdo连接数据库操作示例
Nov 18 PHP
YII2框架使用控制台命令的方法分析
Mar 18 PHP
php基础知识:类与对象(2) 自动加载对象
Dec 13 #PHP
php基础知识:类与对象(1)
Dec 13 #PHP
php基础知识:函数基础知识
Dec 13 #PHP
php基础知识:控制结构
Dec 13 #PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 #PHP
IIS+PHP+MySQL+Zend配置 (视频教程)
Dec 13 #PHP
傻瓜化配置PHP环境――Appserv
Dec 13 #PHP
You might like
中东人咖啡哲学
2021/03/03 咖啡文化
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
PHP多例模式介绍
2013/06/24 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
9个比较实用的php代码片段
2016/03/15 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
Javascript变量函数浅析
2011/09/02 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
原生js实现分页效果
2020/09/23 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
python迭代器的使用方法实例
2013/11/21 Python
python魔法方法-属性访问控制详解
2016/07/25 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
在python中实现对list求和及求积
2018/11/14 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
python不同版本的_new_不同点总结
2020/12/09 Python
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
2015/12/03 面试题
大学运动会通讯稿
2014/01/28 职场文书
初三政治教学反思
2014/01/30 职场文书
幼儿园小班教学反思
2014/02/02 职场文书
金融管理应届生求职信
2014/02/20 职场文书
个人自我鉴定总结
2014/03/25 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL