سؤال

أين يمكنني الحصول على بعض المراجع حول SPL predefined constants مثل SELF_FIRST,CHILD_FIRST ب على PHP.net. أنا لا أحصل على الكثير (فقط نوعها).

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

المحلول

سأخوض (بعض) ثوابت الصف من الصفحة التي ترتبط بها ثم رفع عدد قليل من النقاط الأخرى.

أوضاع التكرار المشتربة


ال RecursiveIteratorIterator::LEAVES_ONLY وضع التكرار. (هذا ال إفتراضي الوضع.)

يقيد وضع التكرار هذا (واحد من ثلاثة) العناصر المتوفرة أثناء التكرار فقط "الأوراق" (فكر في هيكل متكرر كشرفة مع سلسلة من الفروع تنتشر فروع أخرى أو، في حالة عدم وجود المزيد من الفروع، بعد أن تغادر النهاية). في الصفيف array('a'=>array('b','c'),'d','e'=>array('f','g')) الأوراق b,c,d,f و g لأنها في النهاية، فإنها لا تنبثق بأي سلع أخرى.

لإعطاء مقتطف رمز يظهر هذا الوضع في العمل (ستكون هناك سلسلة من الأمثلة التي تحتوي على نفس المحفز المكرر المكرر مع جهاز استئجار مكرر للمحرك المتكرر باستخدام أوضاع وعلامات مختلفة):

$array = array('a'=>array('b','c'),'d','e'=>array('f','g'));
$ait   = new RecursiveArrayIterator($array);

// Only iterate over leaves
$rit   = new RecursiveIteratorIterator($ait, RecursiveIteratorIterator::LEAVES_ONLY);
foreach ($rit as $item) {
    echo $item;
}
// Output: bcdfg

ال RecursiveIteratorIterator::SELF_FIRST وضع التكرار.

يرشد وضع التكرار هذا المؤتمر أن العناصر "الأصل" (أي عدم أوراق) يجب وضعها قبل أطفالهم (إن وجدت) عند التكرار.

// Parents come first
$rit   = new RecursiveIteratorIterator($ait, RecursiveIteratorIterator::SELF_FIRST);
foreach ($rit as $key => $item) {
    if (is_array($item)) echo "[$key]"; // parent
    else echo $item;                    // child
}
// Output: [a]bcd[e]fg

ال RecursiveIteratorIterator::CHILD_FIRST وضع التكرار.

ينقذ وضع التكرار هذا حول مواقع الوالد / الطفل بحيث تأتي عناصر الأطفال (الأوراق) أولا، تليها الوالد كما هو موضح من قبل:

// Children first
$rit   = new RecursiveIteratorIterator($ait, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($rit as $key => $item) {
    if (is_array($item)) echo "[$key]"; // parent
    else echo $item;                    // child
}
// Output: bc[a]dfg[e]

النقاط الأخرى

Recursivititeratoratoratorator

هذه هي الثوابت فقط لأوضاع الثلاثة (أوراق فقط، الوالد الأول أو الطفل أولا) للتكرار حول المحامي العسكري. يتكرر المشيتباتور أيضا flags الوسيطة التي تؤثر على سلوك آخر مثل ما إذا كان يجب أن تتوقف إذا كان كائن الطفل يلقي استثناء، سواء استدعاء __toString للعناصر، وما إلى ذلك (الأعلام CachingIterator الثوابت، التي هي غير موثقة على قدم المساواة).

ثوابت SPL أخرى

هذه العلاقات مع وجهة نظري القادمة. لا توجد بقعة واحدة واحدة، والتي تسرد جميع الثوابت المتاحة في جميع أنحاء SPL: معظم الفصول لا تسرد الثوابت الخاصة بها. ومع ذلك يمكنك استخدام انعكاس لأخذ نظرة خاطفة على الثوابت المتاحة. في سطر الأوامر، استخدم شيئا مثل php --rc recursiveiteratoriterator | grep -i constant لرؤية قائمة ثوابت Recursiveiteratoratorator.

عدم وجود الوثائق

تتم كتابة الوثائق المتاحة في دليل PHP (إلى حد كبير) بالكامل من قبل المتطوعين. SPL على وجه الخصوص هي بقعة مؤلمة مع وجود قدر كبير من العمل للقيام به قبل أن تكون هذه المنطقة شكل سفينة وما يصل إلى مستوى. إذا أراد أي شخص أن يساعد في ذلك (غير متأكد إذا كان الأمر كذلك، فسوف تنظر في هذا الإعلان؟) ثم اتصل بي (salathe@php.net) أو قم بالتسجيل إلى القائمة البريدية في وثائق PHP (إرسال بريد إلكتروني فارغ إلى phpdoc-subscribe@lists.php .NET) وانت عالق فيها. كلما زاد ذلك.

نصائح أخرى

نلقي نظرة على SPL ملفات في http://php.net/~helly/php/ext/spl/.

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