Sadece emin biz aynı sayfada konum yapmak için, üç durumlar var.
AddAttribute kullanarak bir öznitelik içine bir ampersand ekleme
AddChild kullanarak bir öğe içine bir ampersand ekleme
Özellik aşırı yüklenmelerden bir öğenin içine bir ampersand ekleme
Bu afallamış olan 2 ve 3 arasında tutarsızlık bulunuyor. Neden addChild otomatik nesnesine bir özellik ekleme ve does otomatik işareti kaçmak değerini ayarlayarak, oysa işareti kaçış yok?
Benim içgüdüleri dayalı, ve this bug tarafından desteklenmektedir, bu kasıtlı bir tasarım karardı. Aşırı yükleme özelliği ($ a-> d = 'Beş ve Altı' ;) şeyler yapmanın "Benim için ve işaretleri kaçış" yolu olması amaçlanmıştır. AddChild yöntemi yöntemi "Ben eklemek için söylemek tam olarak ne eklemek" olması gerekiyordu. Yani, ihtiyacınız hangisi davranış, SimpleXML sizi ağırlayacak.
Diyelim ki tüm imi zaten kaçtı metin bir veritabanı vardı diyelim. Otomatik öncelemeli burada sizin için işe yaramaz. Eğer addChild kullanmak istiyorum orası. Veya belgenizin bir varlık eklemek için gerekli Diyelim
$a = simplexml_load_string('<root></root>');
$a->b = 'This is a non-breaking space ';
$a->addChild('c','This is a non-breaking space ');
print $a->asXML();
O bug PHP Geliştirici savunan budur. AddChild davranışı bunu kaçtı olmadan belgeye bir işareti eklemek için gerektiğinde bir "daha az basit, daha güçlü" destek sağlamak içindir.
Tabii ki, bu bahsettiğim ilk durum, addAttribute yöntemi ile bize kalkıyor. AddAttribute yöntemi does ve işaretleri kaçış. Peki, şimdi olduğu gibi tutarsızlık devlet olabilir
- AddAttriute yöntem ve işaretleri kaçar
- AddElement yöntemi does not ve işaretleri kaçış
- Bu davranış biraz tutarsız. Bir kullanıcı methods SimpleXML tutarlı bir şekilde bir şeyler kaçmak için beklediğiniz makul
Bu daha sonra SimpleXML API ile gerçek bir sorun ortaya koyar. Burada ideal durum olacaktır
- Eleman nesneleri üzerinde aşırı yüklenmesi Mülkiyet ve işaretleri kaçar
- Özellik nesneleri üzerinde aşırı yüklenmesi Mülkiyet ve işaretleri kaçar
- AddElement yöntem ve işaretleri kaçış yok
- addAttribute yöntem ve işaretleri kaçış yok
SimpleXML bir Özellik nesne kavramı yok, çünkü bu, olsa da imkansız değildir. AddAttribute yöntemi (görünüyor?) Bir öznitelik eklemek için tek yoldur. Bu nedenle, bu (görünüyor?) Çıkıyor SimpleXML kuruluşlar ile özelliklerini yaratma aciz içinde.
Tüm bu Simple XML paradoksu ortaya koymaktadır. Bu API arkasındaki fikir karmaşık olduğu ortaya çıkıyor şey ile etkileşim, basit bir şekilde sağlamak için oldu.
Takım SimpleXMLAttribute nesnesi eklenmiş olabilir, ama bu karmaşıklığı bir eklenen katman bulunuyor. Birden çok nesne hiyerarşisini istiyorsanız, DomDoument kullanın.
Ekip AddAttribute ve addElement bayraklar eklenmiş olabilir, ancak bayraklar API daha karmaşık hale getirmektedir.
Burada gerçek ders? Belki basit sabit ve bir süre üzerinde basit olduğunu bile zordur mi. Bu böyleydi olmadığını bilmiyorum, ama birisi basit bir fikir (kullanım özelliği kolay XML belgelerinin oluşturulması yapmak için aşırı yükleme) ile başladı ve sorunlar / özellik istekleri geldi gibi daha sonra düzeltilmiş gibi SimpleXML ile görünüyor .
Aslında, ben ;) burada gerçek ders sadece JSON kullanmak için olduğunu düşünüyorum