当前位置:  编程技术>php

php5构造函数与析构函数实例

    来源: 互联网  发布时间:2014-08-30

    本文导语:  自php5起,有了构造函数与析构函数。 这使得php更富有面向对象的魅力了。 在php4时,构造函数用的是与类同名的函数来进行构造这个动作。 例如:   代码示例:   将以上代码保存为myclass.php,运行后,会打印出 this is myclass...

自php5起,有了构造函数与析构函数。
这使得php更富有面向对象的魅力了。

在php4时,构造函数用的是与类同名的函数来进行构造这个动作。
例如:
 

代码示例:

 

将以上代码保存为myclass.php,运行后,会打印出 this is myclass字样。这是php4的构造函数(当然,为了兼容,php5也可以这样写)。
在php5里,有了专门的构造和析构函数。__construct()和__destruct() 。再重新改写这个myclass.php。
 

代码示例:

 

保存以后发现打印出了"constructor destroying"。说明构造和析构的确发生了。
目前为止,没有任何问题。在php5的手册里,对于使用__construct还有段说明。如下:
为了实现向后兼容性(指php 4),如果 php 5 在类中找不到 __construct() 函数,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。因此唯一会产生兼容性问题的情况是:类中已有一个名为 __construct() 的方法,但它却又不是构造函数。

再来看一种情况,当一个派生类继承了基类并且这两个类都存在构造和析构函数的时候会出现什么眼的状况呢?
php 5对此的处理手段是: 隐藏基类的构造和析构!
代码:
 

代码示例:


 

保存运行后,结果打印:subclass: constructor subclass: destroying
可以看到,基类的构造与析构并没有发生。
这不得不让人费解,为什么php5会采取这种的机制呢?
c++的构造与析构的过程是:基类构造->派生类构造->派生类析构->基类析构。这才是成熟的机制。为什么php 5 会标新立异?
很显然,这种做法并不十分的明智。

翻看php手册找到一种说法:
php 4 不会从派生类的构造函数中自动调用基类的构造函数。恰当地逐次调用上一级的构造函数是用户的责任。 (php 4)
如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。 (php 5)
可惜这两种说法并不足以令人信服。既然已经存在了构造,为何还得用手工调用?
 

您可能感兴趣的文章:
  • php构造函数与析构函数
  • php构造函数和析构函数学习
  • php构造函数与析构函数初探
  • php构造函数与析构函数实例详解
  • PHP构造函数的深入理解
  • php构造函数的小例子

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php5使用pdo连接数据库实例
  • PHP5中实现多态的两种方法实例分享
  • php5 图片验证码的实例代码
  • php5 pdo数据库类用法实例详解
  • php5中当浏览器禁用cookie时保持会话session的方法
  • PHP5的CMS框架 Kajona
  • nginx服务器下通过fastcgi支持php5详细安装配置步骤
  • PHP5 Web开发框架 Probus
  • PHP5的AJAX开发包 AJASON
  • PHP5的MVC框架 TMPHP
  • PHP5的MVC框架 Agavi
  • PHP5的SVG开发包 SVGGraph
  • 在REDHAT 8.0下安装PHP5的问题
  • PHP5调试工具 debugConsole
  • PHP5 重构工具 Rephactor
  • PHP5开发框架 PRADOTM
  • PHP5框架 KissPHP
  • PHP5框架 Linx
  • php5框架 Rong Framework
  • PHP5的ORM框架 dORM
  • PHP5的ORM框架 SQLReactor
  • PHP5框架 nette
  • Resin的PHP5引擎 Quercus
  • 微型 PHP5 框架 Slim Framework
  • 安装php5碰到的怪问题,急~~~~~


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3