التي تنفيذ مكرر التي يجب استخدامها في PHP، ولماذا؟

StackOverflow https://stackoverflow.com/questions/359099

سؤال

وأنا أحاول أن ريفاكتور كبير، المشروع القديم وشيء واحد لقد لاحظت هو مجموعة من تطبيقات مكرر مختلفة:

while($iterator->moveNext()) {
    $item = $iterator->current();
    // do something with $item;
}   

for($iterator = getIterator(), $iterator->HasNext()) {
    $item = $iterator->Next();
    // do something with $item
}   

while($item = $iterator->fetch()) {
    // do something with item
}   

StandardPHPLibrary (SPL) مكرر الذي يسمح

foreach($iterator as $item) {
    // do something with $item
}   

وجود هذا العدد الكبير من التكرارات مختلفة (مع أساليب مختلفة للحلقات على مجموعات) يبدو وكأنه رائحة الكود قوية، وأنا أميل إلى ريفاكتور كل شيء لSPL. هناك ميزة مقنعة إلى أي من هذه التطبيقات من مكرر، أم أنها مجرد مسألة ذوق شخصي؟

هل كانت مفيدة؟

المحلول

والنسخة SPL هو بالتأكيد وسيلة للذهاب. ليس فقط لأنها أسهل للقراءة، ولكن هذا جزء من PHP الآن، لذلك سوف تكون مألوفة للعديد من الناس.

لا يوجد شيء "خاطئة" مع الآخرين، ولكن كما ذكرتم، وبعد كل هذه الإصدارات المختلفة في مشروع واحد لا يساعد أي شخص.

نصائح أخرى

وإيمو، لمجرد استخدام واحد أو أكثر من المكتبات SPL كواجهة تميل إلى أن تكون أقل قبيحة المستخدمة في الواجهة الأمامية. ومع ذلك، فإن دعم وراء تنفيذ يمكن الحصول على القبيح قليلا.

وعلى سبيل المثال، كتبت مكرر أن كرر بكفاءة مجموعة نتائج قاعدة البيانات، بحيث كانت النتائج التي تم طلب أبدا أبدا جلب من مؤشر الطلب، وإذا كانت العناصر المنال قبل الأوان (IE: $ الكائنات [5])، فإنه سيسعى كل النتائج المطلوبة في مخزن مؤقت داخلي.

وعملت بشكل رائع، أنت فقط نصلي من اجل ان التعليمات البرمجية التي تجعل السحر وراء الكواليس لا يفشل أبدا لأنه يخلط بين الناس عندما يرون كنت تستخدم شيئا يشبه صفيف، وأنه لا "السحر" الذي يمكن أن تفشل:)

وسحر حصلت على الناس أحرقوا في كفة الميزان. واستخدام ذلك بعناية وحكمة، وربما تجعل من الواضح كيف يعمل.

وبلدي تفضيل شخصي هو ل

for( $object as $i => $v ) 

وتدوين لأنها عادة أكثر اتساقا ويمكن التنبؤ به.

for( $dbresult->iterator() as $i => $v ){ 

}

وأسلوب تدوين مطابق وظيفيا، ولكن على الأقل لديك أقل التخمين كيف يعمل على السطح.

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