0

私はあなたがこれを行うことができることを知っています

class Object
{
    private $ar;

    public function __isset($name)
    {
        return isset($this->ar[$name]);
    }
}

その後、次のことを行うために使用できます

$obj = new Object();
if (isset($obj->name)) { /* ... */ }

ただし、これを行う方法はありますか

$obj = new Object();
if (isset($obj)) { /* .... */ }

オブジェクト自体のマジックメソッド$objを使用してステータスの戻りを制御できる場合。__isset()

4

3 に答える 3

2

これを行うには、新しいグローバル関数myIsset()などを定義することしかできませんでした。

function myIsset($obj = NULL)
{
    ...
}

$objPHPで変数をチェックすると、変数issetによって参照される可能性のあるオブジェクトとはまったく相互作用しません。

于 2011-10-14T12:25:47.083 に答える
2

意味がないので、できません(少なくとも、isset()使用することを意図した方法ではありません)。したがってisset($obj)、NULL /未定義ではなく、あるオブジェクトを指している限り、常にtrueです。

于 2011-10-14T12:30:44.360 に答える
0

マジックメソッド__issetは、そのように使用することを意図したものではありません。

PHPマニュアルによると:

「__isset()は、アクセスできないプロパティでisset()またはempty()を呼び出すことによってトリガーされます。」

于 2011-10-14T12:39:20.757 に答える