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 文件上传功能实现代码
Jun 24 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
浅谈discuz密码加密的方式
May 22 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
php实现paypal 授权登录
May 28 PHP
PHP实现的购物车类实例
Jun 17 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
php提交表单时保留多个空格及换行的文本样式的方法
Jun 20 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 PHP
Laravel实现批量更新多条数据
Apr 06 PHP
PHP autoload使用方法及步骤详解
Sep 05 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 array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
详谈PHP编码转换问题
2015/07/28 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
一个用js实现控制台控件的代码
2007/09/04 Javascript
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
完美解决js传递参数中加号和&号自动改变的方法
2016/10/11 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
vue+iview+less 实现换肤功能
2018/08/17 Javascript
js取小数点后两位四种方法
2019/01/18 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
Python中列表的一些基本操作知识汇总
2015/05/20 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
linux面试题参考答案(8)
2015/08/11 面试题
大型活动策划方案
2014/01/12 职场文书
校园安全标语
2014/06/07 职场文书
消防安全宣传标语
2014/06/07 职场文书
关于美容院的活动方案
2014/08/14 职场文书
2014年文员工作总结
2014/11/18 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书