PHP 5.3で正常に機能し、PHP5.4では機能しなくなったコードに問題があります。コードが機能する元の環境は次のとおりです。
Ubuntu 11.04 Lighttpd 1.4.29 PHP 5.3
と
Mac OSX 10.7.4 Apache 2.0.63 PHP 5.3
新しい環境は次のとおりです。
Android 4.0.4 Lighttpd 1.4.29 PHP 5.4.4
問題のあるコードを2つの単純なファイルにまとめました。
[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"; }
}
}
[debug.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にあります
注意:11行目の/data/www/test.class.phpで非オブジェクトのプロパティを取得しようとしています
何もしない
エラー報告レベルを変更しても、PHP5.4では警告と「何もしない」が表示されます。取引が何であるかわからない、私は完全に困惑している。どんな助けでも大歓迎です!