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 插件机制浅析》