LAMP开发精要(1):让 PHP 类的构造函数兼容 4.0 和 5.0 版本

本文介绍了一段能在PHP4.0和5.0环境下兼容运行的代码,通过巧妙地利用__construct()和类名函数实现构造函数的自动执行,确保在两个版本中都能正确初始化类实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    PHP 的 4.0 和 5.0 版本对类的支持有很大的区别。在编写代码时,强烈建议不混用 4.0 和 5.0 的语法。

    但在某些情况下,可能需要考虑2代版本的兼容性。以下一段代码可以在 PHP 4.0 和 5.0 下同时运行,结果相同,兼顾了2个版本。

    原理:PHP5.0 对 4.0 的类的语法向下兼容。但如果 __construct() 和类名函数同时出现,则 __construct() 优先执行。但在 PHP4.0 版本里 __construct() 函数会被当作普通对待,不予理睬。

    所以,以下代码如果在 PHP5.0 环境下执行,会优先执行 __construct() 函数,忽略 class3()函数。
    如果在 PHP4.0 环境下执行,会优先执行 class3() 函数,忽略 __construct()函数,但class3() 函数又显式的调用了__construct()函数。
    所以在2种版本中,都自动执行了 __construct() 函数,达到了自动执行构造函数的目的。
    如果以下代码中使用了 4.0 不能识别的语法,比如 parent、self 等,则不能达到向上兼容的目的了。

    <?php
      //打开错误提示
      error_reporting(E_ALL|E_STRICT);

      class class3
      {
        function __construct() //for PHP5.0
        {
          echo 'this is class3 construct';
        }

        function class3() //for PHP4.0
        {
          $this->__construct();
        }
      }

      $c3 = new class3;
    ?>

    作者:张庆(网眼) 2010-4-1
    来自“网眼视界”:http://blog.why100000.com
    “十万个为什么”电脑学习网:http://www.why100000.com

    下篇预告:《LAMP开发精要(2):Wordpress 插件机制浅析》

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值