get_object_vars () vs dizi cast

3 Cevap php

get_object_vars($obj) ve (array) $obj arasında herhangi bir fark var mı?

Her ikisi de nesnesinin genel özelliklerini geri görünmektedir.

Hangisi daha iyi?

3 Cevap

Bu tam olarak doğru değildir.

get_object_vars kapsamı duyarlıdır ve tüm visible özelliklerini dönecektir. Eğer sınıfın dışında onu ararsanız, yalnızca ortak üyeleri alırsınız; Bir türetilmiş sınıf, sen korumalı ve kamu üyeleri alırsınız; ve sınıfın kendisi, tüm üyelerini alırsınız. Dizi anahtarları özellik adları temsil ve karıştırılmış değildir.

(array) en az PHP 5.3.0 üzerinde, döner döküm, tüm nesne özellikleri, kamu ve aksi. Özelliklerinin ismi kendi koruma düzeyine göre karıştırıldıysa edilir:

  • public: özellik adları aynı, karıştırılmış değil
  • protected: özelliği için kilit isim bir * ile başlar
  • private: özellik için bir anahtar adı sınıfın adıyla başlar

casting to an array daha fazla bilgi almak için bkz.

Ben daha iyi bir durumunuza en uygun olduğunu anlamak mümkün olacak umuyoruz.

Get_object_vars () fonksiyonu istediğiniz etkiyi elde net bir yöntemdir. Bir dizi için döküm de bir çözüm olsa da, bu davranış PHP'nin sonraki sürümlerinde değişebilir.

İki yöntem arasındaki gerçek fark olup olmadığını bilmiyorum ama yukarıdaki argümanlar işlevi kullanmak için bana yol açacak.

Daha iyi ne gerçekten ihtiyaç budur. get_object_vars () özel ve korumalı üyeleri görünmüyor. Bir örnek için kılavuzda this comment bakın.