यह मेरे सिर में, जहां मैं इन सबसे छुटकारा में पकड़ा गया के शीर्ष के बाहर चला जाता है PHP 5.3 से पहले परिवर्तन जो कि बाद में और बाद में एसपीएल (मानक पीएचपीएलबीआरआईआर) और सामानों के बारे में बदल रहे थे, जो कि भयानक (भयानक) पीईसीएल विस्तार में स्थानांतरित किए जा रहे थे ऑन।
प्रमुख बात यह है कि 5.3 के बाद से बदल गया है, कि एसपीएल एक विस्तार है कि अब और निष्क्रिय नहीं किया जा सकता है, 5.3 की changelog कि
- जोड़ा गया एसपीएल मानक एक्सटेंशन की सूची है कि निष्क्रिय नहीं किया जा सकता है के लिए ध्यान देने योग्य बात यह देखने बन गया । (मार्कस)
तो DirectoryIterator या SPLDoublyLinkedList की तरह सभी फैंसी कक्षाएं अब कक्षाओं का एक ठीक सूट है कि PHP 5.3 के साथ आया था थे।
वहां कई चर्चाएं चल रही थीं कि निर्देशिकाइटरेटर अभी भी फाइलों/निर्देशिकाओं और व्यवहार से पुन: उपयोग करने में बहुत बेकार था, जो फाइल सिस्टम के लिए पर्याप्त अज्ञात नहीं था। क्योंकि फाइल सिस्टम (विंडोज एनटीएफएस/* निक्स एक्सटीएक्स) के आधार पर परिणामस्वरूप इटेटरेटर दूसरे से भिन्न होता है, जहां *nix
प्रति डिफ़ॉल्ट वातावरण हमेशा वैध निर्देशिका के रूप में डॉट और डबल डॉट निर्देशिका (.
और ..
) के परिणामस्वरूप होते हैं। isDot()
विधि का उपयोग करके इन बिंदु निर्देशिका को लूप में फ़िल्टर किया जा सकता है।
$it = new DirectoryIterator(__DIR__);
foreach ($it as $fileinfo) {
if (!$fileinfo->isDot())
var_dump($fileinfo->getFilename());
}
तो FilesystemIterator
PHP 5 में नए अभिभावक वर्ग बन गया।3, जो इसकी रिलीज से पहले DirectoryIterator
था (जहां FilesystemIterator
को डिफ़ॉल्ट रूप से द्वारा परिवर्तनीय व्यवहार को लागू करने के लिए विस्तारित करता है)। व्यवहार, या FilesystemIterator
उत्पादित परिणाम है, तो सभी विभिन्न फ़ाइल सिस्टम के बराबर और विनिमेय पाश
$it = new FilesystemIterator(__DIR__);
foreach ($it as $fileinfo) {
echo $fileinfo->getFilename() . "\n";
}
यह एक अच्छा सवाल है कि वे क्यों देख के लिए दस्तावेज़ को अद्यतन नहीं किया है में किसी भी भूमि के ऊपर की आवश्यकता के बिना किया जाएगा इस तथ्य पर उपयोगकर्ता वास्तव में FilesystemIterator
DirectoryIterator
से पहले था।
अंतर उन हिस्सों के भीतर है जो * फाइल सिस्टम सिस्टम 'मैनुअल पेज पर * दस्तावेज * हैं * जिन्हें * विरासत विधियों के रूप में सूचीबद्ध नहीं किया गया है (वह पृष्ठ इन्हें सूचीबद्ध नहीं करता है, लेकिन कुछ क्लास पेज उनको सूचीबद्ध करते हैं, इसलिए केवल एक पॉइंटर , मैन्युअल पेज पर आप जो कुछ देखते हैं * है * अंतर [कम से कम अभी]]। – hakre