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 相关文章推荐
用PHP实现小型站点广告管理
Oct 09 PHP
PHP取二进制文件头快速判断文件类型的实现代码
Aug 05 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
部署PHP时的4个配置修改说明
Oct 19 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
PHP验证码类ValidateCode解析
Jan 07 PHP
php实现留言板功能
Mar 05 PHP
thinkPHP简单调用函数与类库的方法
Mar 15 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 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
PHP 模拟登陆MSN并获得用户信息
2009/05/16 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
input链接页面、打开新网页等等的具体实现
2013/12/30 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Python采用Django开发自己的博客系统
2020/09/29 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
卡骆驰英国官网:Crocs英国
2019/08/22 全球购物
电大会计学自我鉴定
2014/02/06 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
运动会演讲稿100字
2014/08/25 职场文书
2015年新学期寄语
2015/02/26 职场文书
质量保证书格式
2015/02/27 职场文书
2015年底工作总结范文
2015/05/15 职场文书
师德培训心得体会2016
2016/01/09 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
常用的Python代码调试工具总结
2021/06/23 Python
入门学习Go的基本语法
2021/07/07 Golang
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技