1

ウェブサイトをあるマシンから別のマシンに転送すると、このケースのように大量のエラーが発生するので、とてもイライラします。しかし、これは私の好奇心をそそるものであり、これが私が質問をしている理由です. 次のコードがあります。

namsepace MF;
class Box {
    private static $dumpYard = array();

    public static function get($name) {
        return self::$dumpYard[$name];
    }

    public static function set($name, $value, $overwrite=false) {
        if($overwrite || !isset(self::$dumpYard[$name])){
            self::$dumpYard[$name] = $value;
        }else{
            if(DEBUG_MODE){
                echo('Value for "'.$name.'" already set in box, can\'t overwrite');
            }
        }
    }
}

したがって、アプリケーションが LOCAL テスト サーバーで次の行に到達すると、次のようになります。

if(!empty(\MF\Box::get('requestsSpam'))){
    throw new \Exception('Please don\'t spam');
}

致命的なエラーが発生します: 書き込みコンテキストで関数の戻り値を使用できません。ただし、このコードは、私の Web サイトの実際のホスティング サーバーではエラーをスローしません。それはどうしてですか?

4

1 に答える 1

3

empty()変数でのみ機能します。そのはず:

$result = \MF\Box::get('requestsSpam');
if(!empty($result)){
    throw new \Exception('Please don\'t spam');
}

なんで?empty()関数ではなく言語構造です。宣言された変数でのみ機能します。これは設計された方法であり、魔法ではありません。

于 2013-10-31T20:50:36.250 に答える