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 相关文章推荐
PHP4实际应用经验篇(5)
Oct 09 PHP
php中变量及部分适用方法
Mar 27 PHP
JpGraph php柱状图使用介绍
Aug 23 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
php利用scws实现mysql全文搜索功能的方法
Dec 25 PHP
PHP输出日历表代码实例
Mar 27 PHP
php实现的美国50个州选择列表实例
Apr 20 PHP
启用Csrf后POST数据时出现的400错误
Jul 05 PHP
PHP实现的简单适配器模式示例
Jun 22 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
May 23 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 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 Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
php基础教程
2015/08/26 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
Python编程深度学习计算库之numpy
2018/12/28 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
python如何把字符串类型list转换成list
2020/02/18 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
2021/01/18 Python
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
香港士多网上超级市场:Ztore
2021/01/09 全球购物
新闻专业应届生求职信
2013/10/31 职场文书
学校联谊活动方案
2014/02/15 职场文书
家长会主持词开场白
2014/03/18 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
民主评议党员工作总结
2014/10/20 职场文书
社区活动总结
2015/02/04 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
小学运动会入场口号
2015/12/24 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
一文搞懂python异常处理、模块与包
2021/06/26 Python