سؤال

أقوم بإنشاء مكتبة للوصول إلى واجهة برمجة تطبيقات تصدير بيانات Google Analytics. جميع البيانات التي تصل إليها المكتبة في تنسيق Atom وتستخدم العديد من مساحات الأسماء المختلفة في جميع أنحاء. استخدمت تجاربي مع واجهة برمجة التطبيقات SimpleXML للحلية حتى الآن ، خاصة وأن كل ما أقوم به هو الوصول إلى البيانات المحتفظ بها داخل الخلاصة.

الآن أنا قادم لأكتب مكتبة ، أتساءل عما إذا كانت المضي قدمًا في SimpleXML ستكون كافية أو ما إذا كانت الوظائف المعززة لوحدة DOM في PHP ستكون ذات فائدة في المستقبل. لم أكتب الكثير من التعليمات البرمجية لهذا الجزء من المكتبة حتى الآن حتى لا يزال الاختيار مفتوحًا.

لقد قرأت أن وحدة PHP DOM يمكن أن تكون خيارًا أفضل إذا كنت بحاجة إلى إنشاء XML DOM على الذبابة أو تعديل وحدة موجودة ، لكنني لست متأكدًا تمامًا من أنني سأحتاج إلى هذه الوظيفة على أي حال بسبب طبيعة واجهة برمجة التطبيقات (لا توجد بيانات دفع إلى الخادم ، على سبيل المثال). من المؤكد أن SimpleXML أسهل في الاستخدام ورأيت أشخاصًا يقولون إنه بالنسبة لحالات القراءة فقط ، فكل ما تحتاجه.

السؤال هو في الأساس ، ماذا ستستخدم؟ لن يكون التوافق مشكلة حيث أن تكوين الخادم سوف يتطابق مع متطلبات التطبيق. هل يستحق بناء المكتبة مع وضع PHP DOM في الاعتبار أم يجب أن ألتزم بـ SimpleXML في الوقت الحالي؟

تحديث: فيما يلي مثالان على نوع الخلاصات التي سأتعامل معها:

  1. خلاصة الحساب
  2. خلاصة البيانات
هل كانت مفيدة؟

المحلول

رأيي عليه:

Pros Simplexml:

  • بسيط
  • رمز غير بديهي غير بديهي
  • عظيم لقراءة/تحليل المستندات

سلبيات SimpleXML:

  • فظيع لتوليد XML.
  • نقص في المرونة والقوة

إيجابيات دوم:

  • قوي للغاية
  • رائع لتوليد المستندات
  • سيكون على دراية إذا قمت بأي البرمجة النصية الأخرى (على سبيل المثال: في JavaScript)

سلبيات دوم:

  • مطوّلة
  • في بعض الأحيان معقدة بلا داع.

أنا شخصياً سألتزم دوم على طول الطريق. سوف تحصل على أي مكان تحتاجه للذهاب. الوثائق أكثر من كافية ، وعلى الرغم من أن يديك قد تحصل على قرحة من كل الكتابة ، فلن تشعر أبدًا بالتفكير المحبط "لماذا لا يمكن أن تفعل ذلك فقط هذه??"

إذا كان كل ما عليك فعله هو قراءة مستند ، أو القيام ببعض التحرير الأساسي للغاية ، فربما تذهب مع SimpleXML. بالنسبة لي ، أنا معتاد على مكتبات DOM ، لذلك أنا فقط أستخدم ذلك في كل مكان وهو رائع.

نصائح أخرى

SimpleXML قادر تمامًا على التعامل مع مساحات الأسماء. في حالتك ، عليك فقط التكرار من خلال الإدخالات ، استخدم getNameSpaces ونقل حجة إلى children طريقة لطلب الأطفال مع مساحة اسم معينة.

ومع ذلك ، يمكنك استخدام DOM إذا كنت ترغب في كتابة 3x الرمز.

حسنًا ، إذا كنت بحاجة إلى إعادة اختراع العجلة ، فربما سأستخدم Simplexml ... أو يمكنك فقط استخدام zend_gdata (إذا كان هناك ما تحتاجه هناك) أو تمتد zend_feed_atom إذا لم يكن. من المحتمل أن يكون أي من الخيارين نصف مقدار العمل الذي تحتاج إلى القيام به :)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top