Directoryiterator غير متناسقة+سلوك مرشح في PHP؟

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

  •  21-09-2019
  •  | 
  •  

سؤال

لقد كتبت برنامج نصي يستخدم فئة FilterIriterator التي تأتي من مكتبة PHP القياسية (SPL) وأحصل على إصدارات مختلفة من PHP 5.x :( هنا وظيفة القبول ():

public function accept()
{   
$current = $this->current();
print_r($current);      

    return true;
}   

و Heres ناتج عن PHP 5.3.1:

DirectoryIterator Object
(
    [pathName:SplFileInfo:private] => /Users/alex/Sites/dev/php/fscms/content/.
    [fileName:SplFileInfo:private] => .
    [glob:DirectoryIterator:private] => 
    [subPathName:RecursiveDirectoryIterator:private] => 
)
DirectoryIterator Object
(
    [pathName:SplFileInfo:private] => /Users/alex/Sites/dev/php/fscms/content/..
    [fileName:SplFileInfo:private] => ..
    [glob:DirectoryIterator:private] => 
    [subPathName:RecursiveDirectoryIterator:private] => 
)
DirectoryIterator Object
(
    [pathName:SplFileInfo:private] => /Users/alex/Sites/dev/php/fscms/content/.DS_Store
    [fileName:SplFileInfo:private] => .DS_Store
    [glob:DirectoryIterator:private] => 
    [subPathName:RecursiveDirectoryIterator:private] => 
)

و Heres ما أحصل عليه بنفس الرمز تحت PHP 5.2.5

DirectoryIterator Object
(
)
DirectoryIterator Object
(
)
DirectoryIterator Object
(
)

هذا الأخير لديه إذن 755 على جميع الملفات. ما الأمر مع دات؟

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

المحلول

يبدو أن هذا على ما يرام في الواقع! تعمل طرق الاتصال على كائنات الدليل الفارغ على ما يبدو. القضايا التي كنت أواجهها في مكان آخر وكان لديها علاقة باستنساخ هذه الأشياء. يبدو أن PHP 5.3 استنساخ عميق بينما 5.2 لا يتم قتل جميع المراجع على كل تكرار (أو شيء من هذا القبيل). إنها فوضى قبيحة غير موثقة: تمتص PHP!

نصائح أخرى

من php.net:

  • ملاحظة: اعتبارًا من PHP 5.3.0 ، لم يعد من الممكن تعطيل هذا الامتداد وبالتالي يتوفر دائمًا.

ربما يكون تكوين PHP 5.2.5 الخاص بك غير مكتمل/خاطئ إلى حد ما؟ هل لديك مجموعة سجلات الخطأ الخاصة بك لعرض التحذيرات؟ إذا لم يكن الأمر كذلك ، فقم بضبطه وقم بتشغيل الكود مرة أخرى لمعرفة ما إذا كان يرمي أي تحذيرات ...

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