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 相关文章推荐
获取URL文件名后缀
Oct 24 PHP
linux系统下php安装mbstring扩展的二种方法
Jan 20 PHP
利用中国天气预报接口实现简单天气预报
Jan 20 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
PHP生成唯一订单号的方法汇总
Apr 16 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
May 04 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
利用ajax+php实现商品价格计算
Mar 31 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删除HTMl标签的三种解决方法
2013/06/30 PHP
php统计数组元素个数的方法
2015/07/02 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
jquery 学习笔记一
2010/04/07 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
axios使用拦截器统一处理所有的http请求的方法
2018/11/02 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
2020/11/17 Vue.js
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
mac使用python识别图形验证码功能
2020/01/10 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
社区平安建设汇报材料
2014/08/14 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
绵山导游词
2015/02/05 职场文书