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
excellent!――ASCII Art(由目标图象生成ascii)
Feb 20 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
Mar 11 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
Dec 29 PHP
php 多文件上传的实现实例
Oct 23 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
PHP操作路由器实现方法示例
Apr 27 PHP
PHP使用phpunit进行单元测试示例
Sep 23 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_Flame(Version:Progress)的原代码
2006/10/09 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
PHP引用符&的用法详细解析
2013/08/22 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
php自定义错误处理用法实例
2015/03/20 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
2016/12/02 Javascript
WebPack基础知识详解
2017/01/16 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
vue车牌号校验和银行校验实战
2019/01/23 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
Python实现调度算法代码详解
2017/12/01 Python
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
详解Python字典小结
2018/10/20 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
装饰资料员岗位职责
2013/12/30 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
解除合同协议书
2014/04/17 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
员工规章制度范本
2015/08/07 职场文书
高中体育课教学反思
2016/02/16 职场文书
合作协议书格式范本
2016/03/21 职场文书
Nginx四层负载均衡的配置指南
2021/06/11 Servers
Redis读写分离搭建的完整步骤
2021/09/14 Redis
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js