0

私は非常に単純なコード行を持っています:

if(empty(trim($this->name)) {
    $this->error = "Name required";
    return false;
}

このコードは、私の開発環境では問題なく動作しますが、本番環境では致命的なエラーがスローされます。

Can't use function return value in write context

これはなぜですか。さらに重要なことに、コードが開発環境と本番環境で同じように動作するように (つまり、壊れる)、開発環境で何を変更する必要があるのでしょうか?

どうもありがとう。

4

3 に答える 3

2

5.5 より前のバージョンの PHP では、関数またはメソッドの戻り値を で使用することはできませんempty()。「ハック」を行う必要があります。

// Do only if your PHP version is lower than 5.5
$trimmedVal = trim($this->name);

if(empty($trimmedVal)) {
    $this->error = "Name required";
    return false;
}
于 2013-11-08T15:04:17.210 に答える
0

これはうまくいくはずです

$name = $this->name;
if(empty(trim($name))) {
     $this->error = "Name required";
     return false;
}

"empty()" では戻り値を使用できないためです。

于 2013-11-08T15:05:14.377 に答える
0

既にブラウザにコンテンツを書き込んでいるようです。PHP では、ブラウザーへの書き込みが発生する前に、関数を評価する必要があります。後で何かを返すと、これは不可能です。

少なくとも、私が PHP を使用したときはそうでした。より新しいバージョンで動作する場合があります。

于 2013-11-08T15:06:00.540 に答える