0

__isset内の実際のコードでエラーが発生しますが、「run phponlinewebsite」にアクセスすると機能します。そのため、コードで機能しない理由がわかりません。

<?
class Test {

    private $args;

    public function __construct($args = array()) {
        $this->args = $args;
    }

    public function __isset($name) {
        return $this->args[$name]; //undefined index on my server (is fine on php site)
    }

    function prnt() {
        // echo isset($this->i) ? "set" : "notset"; --> works, both print 'set'
        echo isset($this->h) ? "set" : "notset";
    }

}
?>

次に、これを実行します。

$test = new Test(array('i' => '1234'));
$test->prnt();
//result on php website: notset
//result on my website: Undefined index at the line shown above.

おそらく役立つ情報:
私のサーバーはphp5.1を実行しています。
これは私の実際のコードisset($this->var)のファイルで起こっています。 (上記のように)変数が存在する限り、それは明らかに機能します。include
i

4

2 に答える 2

3

存在しないキーの値を返そうとしていますが、代わりに、を使用してキーのテスト結果を返します。array_key_exists

public function __isset($name) {
    return array_key_exists($name, $this->args);
}
于 2013-03-26T15:29:47.000 に答える
3

各環境でのエラー報告設定は異なります。ある環境ではレベルのエラーを許可E_NOTICEし、別の環境ではエラーをブロックしています。

次のようなことをする必要があります。

return array_key_exists($name, $this->args);
于 2013-03-26T15:30:11.080 に答える