2016-09-30 9 views
1
で未定義のプロパティ
$a = (object)['foo' => 'bar']; 
$a->baz; 

$a->baz呼び出しがNULLを返すだけでなく、予告Undefined property..を発生させます。プロパティが存在しない場合、nullを得ることは私にはうまくいますが、if文や@記号ではなく、設定や何かから、この特定の通知を抑止する方法はありますが、他の通知を見続けますか?避け通知:stdClassの

答えて

1

可能な解決策は、__getマジックメソッドを使用しているカスタムSTDクラスを作成するには、次のようになります。

class customStdClass 
{ 
    public function __get($name) 
    { 
     if (!isset($this->$name)) { 
      return null; 
     } 

     return $this->$name; 
    } 

    public static function fromArray($attributes) 
    { 
     $object = new self(); 

     foreach ($attributes as $name => $value) { 
      $object->$name = $value; 
     } 

     return $object; 
    } 
} 

あなたが好きそれを使用することができます:はい、それは私が現在持っているものである

$object = customStdClass::fromArray(['foo' => 'bar']); 
echo $object->foo; 
echo $object->baz; // no warning here 
+1

私が避けようとしていること。 –

関連する問題