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 相关文章推荐
对盗链说再见...
Oct 09 PHP
PHP实现图片简单上传
Oct 09 PHP
php中的注释、变量、数组、常量、函数应用介绍
Nov 16 PHP
php 检查电子邮件函数(自写)
Jan 16 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
php验证身份证号码正确性的函数
Jul 20 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
PHP实现 APP端微信支付功能
Jun 22 PHP
Laravel 前端资源配置教程
Oct 18 PHP
TP5框架页面跳转样式操作示例
Apr 05 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
Apr 06 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
smtp邮件发送一例
2006/10/09 PHP
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
jquery 使用简明教程
2014/03/05 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
2016/02/25 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
js实现打字小游戏
2019/12/17 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
Python Json序列化与反序列化的示例
2018/01/31 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
Python实现像awk一样分割字符串
2020/09/15 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
美发活动策划书
2014/01/14 职场文书
揠苗助长教学反思
2014/02/04 职场文书
幼儿园毕业园长感言
2014/02/24 职场文书
大学教师师德师风演讲稿
2014/08/22 职场文书
安阳殷墟导游词
2015/02/10 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
单位证明范文
2015/06/18 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书