2

PHP stdClassからプロパティをチェックすることは可能ですか?stdClassとして生成されているモデルがいくつかあります。それらを使用するとき、私が呼び出しているプロパティが何らかのコアクラスに存在するかどうかを確認したいと思います。__getがstdClassによって無視されていることに気づきました...

stdClassのプロパティがオブジェクトに存在するかどうかを確認するにはどうすればよいですか?

4

3 に答える 3

6

StdClassオブジェクトには、コードではなくプロパティのみが含まれます。したがって、それらの「内」からは何もコーディングできません。したがって、この「欠点」を回避する必要があります。これらのクラスを生成するものに応じて、探している機能を提供するデータを (たとえば、 Decoratorを使用して) 「オーバーロード」することでこれを行うことができます。

class MyClass
{
    private $subject;
    public function __construct(object $stdClass)
    {
        $this->subject = $stdClass;
    }
    public function __get($name)
    {
        $exists = isset($this->subject->$name);
        #...
    }
}

$myModel = new MyClass($model);
于 2011-11-17T14:58:39.030 に答える
5

を使用してオブジェクトget_object_vars()を反復処理し、関数を使用して現在のプロパティが親クラスに存在するかどうかを確認します。stdClassproperty_exists()

于 2011-11-17T14:57:46.560 に答える
0

配列にキャストするだけ

$x = (array) $myStdClassObject;

次に、すべての一般的な配列関数を使用できます

于 2011-11-17T15:00:35.893 に答える