"Boş" bir nesne oluşturmanın standart yolu:
$oVal = new stdClass();
Ancak, PHP> = 5.4 ile şahsen kullanmayı tercih ederim:
$oVal = (object)[];
Daha kısadır ve kişisel olarak daha net olduğunu düşünüyorum çünkü stdClass acemi programcılara yanıltıcı olabilir (yani "Hey, bir sınıf değil, bir nesne istiyorum!" ...).
PHP <5.4 ile aynıdır:
$oVal = (object) array();
(object)[]
eşittir new stdClass()
.
PHP kılavuzuna bakın ( burada ):
stdClass : Nesneye yazarak oluşturulur.
ve ( burada ):
Bir nesne bir nesneye dönüştürülürse, değiştirilmez. Başka türde bir değer bir nesneye dönüştürülürse , stdClass yerleşik sınıfının yeni bir örneği oluşturulur .
Ancak @ PaulP'nin dediği gibi boş ($ oVal) ifadesinin false döndürdüğünü unutmayın:
Özelliği olmayan nesneler artık boş kabul edilmez.
Örneğinizle ilgili olarak şunları yazarsanız:
$oVal = new stdClass();
$oVal->key1->var1 = "something"; // PHP creates a Warning here
$oVal->key1->var2 = "something else";
PHP, örtük olarak özelliği key1
(bir nesnenin kendisi) oluşturarak aşağıdaki Uyarıyı oluşturur
Uyarı: Boş değerden varsayılan nesne oluşturma
Yapılandırmanız ( hata raporlama düzeyine bakın ) tarayıcıda bu uyarıyı gösteriyorsa, bu bir sorun olabilir . Bu başka bir konudur, ancak hızlı ve kirli bir yaklaşım , uyarıyı yok saymak için hata kontrol operatörünü (@) kullanmak olabilir :
$oVal = new stdClass();
@$oVal->key1->var1 = "something"; // the warning is ignored thanks to @
$oVal->key1->var2 = "something else";
$var = (object) (boolean) (string) (int) (array) new StdClass;
Sadece güvende olmak için.