書き込みコンテキストではメソッドの戻り値を使用できません 質問する

書き込みコンテキストではメソッドの戻り値を使用できません 質問する

次のコードは動作するはずだと思いましたが、動作しません(編集済み: 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())

おすすめ記事