次のコードは動作するはずだと思いましたが、動作しません(編集済み: PHP 5.5 以降で動作するようになりました)。
if (!empty($r->getError()))
簡単に言うとgetError()
:
public function getError()
{
return $this->error;
}
しかし、結局このエラーが発生します:
書き込みコンテキストではメソッドの戻り値を使用できません
これはどういう意味ですか? これはただ読むだけではないのですか?
ベストアンサー1
empty()
参照によって値にアクセスする必要があり (その参照が存在するものを指しているかどうかを確認するため)、PHP 5.5 より前では関数から返される一時的な値への参照はサポートされていませんでした。
しかし、あなたが抱えている本当の問題は、empty()
「空」の値が「偽」の値と何か違うと誤解して、 all を使用していることです。
空は の別名です!isset($thing) || !$thing
。チェックしているものが常に存在する場合 (PHP では関数呼び出しの結果が常に存在する場合)、empty()
関数は否定演算子 に他なりません。
PHP には空の概念がありません。false と評価される値は空であり、true と評価される値は空ではありません。同じことです。このコード:
$x = something();
if (empty($x)) …
この:
$x = something();
if (!$x) …
は、すべてのケースで、すべてのデータ型に対して常に同じ結果になります($x
定義されているためempty()
冗長です)。
メソッドからの戻り値は常に存在します (ステートメントがない場合でもreturn
、戻り値が存在し、 が含まれていますnull
)。したがって、
if (!empty($r->getError()))
論理的には次の式と同等です。
if ($r->getError())