我遇到了在 PHP 5.3 中运行良好的代码问题,现在在 PHP 5.4 中被破坏了。代码工作的原始环境是:
Ubuntu 11.04 Lighttpd 1.4.29 PHP 5.3
和
Mac OSX 10.7.4 阿帕奇 2.0.63 PHP 5.3
新环境是:
安卓 4.0.4 Lighttpd 1.4.29 PHP 5.4.4
我将问题代码归结为两个简单的文件:
[test.class.php]
class Test {
public $testProp1;
function setTestProp1($value){
$this->testProp1 = $value;
return ($this->testProp1 != '') ? true : false;
}
function doSomething()
{
if( $this->testProp1 )
{ echo "Just do some " . $this->testProp1; }
else
{ echo "Just do nothing"; }
}
}
[调试.php]
error_reporting(E_ALL);
require "test.class.php";
$myTest = new Test();
$myTest->setTestProp1("foo");
$myTest->doSomething();
在使用 PHP 5.3 的系统上,输出为:
做一些 foo
在使用 PHP 5.4 的系统上,输出为:
警告:从第 5 行 /data/www/test.class.php 中的空值创建默认对象
注意:未定义变量:第 11 行 /data/www/test.class.php 中的 this
注意:尝试在第 11 行的 /data/www/test.class.php 中获取非对象的属性
什么都不做
即使我更改了错误报告级别,我仍然会在 PHP 5.4 中收到警告和“什么都不做”。不知道交易是什么,我完全被难住了。任何帮助表示赞赏!