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 相关文章推荐
用缓存实现静态页面的测试
Dec 06 PHP
PHP实现用户认证及管理完全源码
Mar 11 PHP
ajax 的post方法实例(带循环)
Jul 04 PHP
PHPExcel读取Excel文件的实现代码
Dec 06 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
解析php利用正则表达式解决采集内容排版的问题
Jun 20 PHP
通过curl模拟post和get方式提交的表单类
Apr 23 PHP
php中header跳转使用include包含解决参数丢失问题
May 08 PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
Aug 21 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 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速度全攻略
2006/10/09 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
Python内置函数reversed()用法分析
2018/03/20 Python
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
python如何设置静态变量
2020/09/07 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
python em算法的实现
2020/10/03 Python
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
服务承诺书范文
2014/05/19 职场文书
小组口号大全
2014/06/09 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
关于环保的活动方案
2014/08/25 职场文书
雷锋的故事观后感
2015/06/10 职场文书
新课程改革心得体会
2016/01/22 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书