1

空のオブジェクト(varが割り当てられていない)のプロパティにアクセスするときにPHPが警告またはエラーを報告しない理由を誰かが私に説明できますか?

例えば:

$oMyObject->test = 'hello world'; // $oMyObject is not assigned but no warning or error

これを行うと、エラーが発生します:

$oMyObject->test(); // Error: Calling function on non-object

バージョン情報:

Windows XP
XAMPP Windows Version 1.7.0
Apache/2.2.11 (Win32) 
PHP 5.2.8
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with Xdebug v2.0.4, Copyright (c) 2002-2008, by Derick Rethans

なんで?error_reporting(E_ALL)を設定しようとしましたが、それでもエラーや警告はありません。

4

2 に答える 2

0

PHP でのこの動作は、非常にエラーが発生しやすいものです。これが良いアイデアだと実際に誰が考えたのですか?

$rs = $db->Execute("SELECT 1");
while(!$r->EOF) {
   // runs forever
   $rs->MoveNext();
}

タイプミス ($r代わりに$rs) はエラーではないため、すぐには検出されません。

イッピー!

私の意見では、これは非/null オブジェクト メンバー アクセスであり、完全な FUBAR です。その場合、すべての正常な言語 (PHP はそうではありません) は大きなエラー (例: 例外、nullpointerexception、バス エラー、セグメンテーション違反など) を返します。

于 2012-02-29T09:46:17.270 に答える
0

$oMyObject->text = 'こんにちは世界'; は、テキストが公開と宣言され、非公開または保護されていない場合、完全に有効なステートメントです。$oMyObject->text() に関しては、さらに情報を提供する必要があります。どのようなエラーが表示されますか? 関数 text() は公開されていますか、それとも非公開ですか、それとも保護されていますか? 関数の機能を投稿できますか?

于 2010-09-23T19:35:57.450 に答える