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.MVC的模板标签系统(二)
Sep 05 PHP
建立文件交换功能的脚本(二)
Oct 09 PHP
PHP编实现程动态图像的创建代码
Sep 28 PHP
PHP 显示客户端IP与服务器IP的代码
Oct 12 PHP
简单的php文件上传(实例)
Oct 27 PHP
php数据库备份还原类分享
Mar 20 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
Jul 25 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
PHP实现的mysql读写分离操作示例
May 22 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
Mar 18 PHP
Laravel 自动生成验证的实例讲解:login / logout
Oct 14 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
乐信RP2100的电路分析和打磨
2021/03/02 无线电
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
php创建session的方法实例详解
2015/01/27 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
JS实现的省份级联实例代码
2013/06/24 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
详解vscode中vue代码颜色插件
2018/10/11 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
初步讲解Python中的元组概念
2015/05/21 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
python批量读取文件名并写入txt文件中
2020/09/05 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
JAVA和C++区别都有哪些
2015/03/30 面试题
大一期末自我鉴定
2013/12/13 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书