]> granicus.if.org Git - php/commitdiff
- MFH Make this behave like in <= 5.2.5 and test for it
authorMarcus Boerger <helly@php.net>
Wed, 13 Feb 2008 12:23:26 +0000 (12:23 +0000)
committerMarcus Boerger <helly@php.net>
Wed, 13 Feb 2008 12:23:26 +0000 (12:23 +0000)
ext/spl/spl.php
ext/spl/spl_directory.c
ext/spl/spl_directory.h
ext/spl/tests/dit_002.phpt [new file with mode: 0755]

index 2be8057fb92f992e5509d24e354572de018e295a..43c29e987744fcf175a1ee12a42301d5ff48964c 100755 (executable)
@@ -1019,8 +1019,8 @@ class DirectoryIterator extends SplFileInfo implements Iterator
  */
 class RecursiveDirectoryIterator extends DirectoryIterator implements RecursiveIterator
 {
-       const CURRENT_AS_SELF       0x00000000; /* make RecursiveDirectoryTree::current() return getSelf() */
-       const CURRENT_AS_FILEINFO   0x00000010; /* make RecursiveDirectoryTree::current() return SplFileInfo */
+       const CURRENT_AS_FILEINFO   0x00000000; /* make RecursiveDirectoryTree::current() return SplFileInfo */
+       const CURRENT_AS_SELF       0x00000010; /* make RecursiveDirectoryTree::current() return getSelf() */
        const CURRENT_AS_PATHNAME   0x00000020; /* make RecursiveDirectoryTree::current() return getPathname() */
 
        const KEY_AS_PATHNAME       0x00000000; /* make RecursiveDirectoryTree::key() return getPathname() */
index 69c4a8654da3036ba24f210bcd6c24f8016fbc8d..703eae203bedd7cbf1f69a412f92ccd53eec8497 100755 (executable)
@@ -962,7 +962,7 @@ SPL_METHOD(RecursiveDirectoryIterator, __construct)
        spl_filesystem_object *intern;
        char *path;
        int len;
-       long flags = 0;
+       long flags = SPL_FILE_DIR_KEY_AS_PATHNAME|SPL_FILE_DIR_CURRENT_AS_FILEINFO;
 
        php_set_error_handling(EH_THROW, spl_ce_UnexpectedValueException TSRMLS_CC);
 
index 56a7c48d7b169531ebf4e6df5702ab56b584115c..839b36f510a4db6ed916adb95eb0e8fd756f2a20 100755 (executable)
@@ -93,8 +93,8 @@ struct _spl_filesystem_object {
 #define SPL_FILE_OBJECT_SKIP_EMPTY         0x00000006 /* skip empty lines */
 #define SPL_FILE_OBJECT_READ_CSV           0x00000008 /* read via fgetcsv */
 
-#define SPL_FILE_DIR_CURRENT_AS_SELF       0x00000000 /* make RecursiveDirectoryTree::current() return getSelf() */
-#define SPL_FILE_DIR_CURRENT_AS_FILEINFO   0x00000010 /* make RecursiveDirectoryTree::current() return SplFileInfo */
+#define SPL_FILE_DIR_CURRENT_AS_FILEINFO   0x00000000 /* make RecursiveDirectoryTree::current() return SplFileInfo */
+#define SPL_FILE_DIR_CURRENT_AS_SELF       0x00000010 /* make RecursiveDirectoryTree::current() return getSelf() */
 #define SPL_FILE_DIR_CURRENT_AS_PATHNAME   0x00000020 /* make RecursiveDirectoryTree::current() return getPathname() */
 #define SPL_FILE_DIR_CURRENT_MODE_MASK     0x000000F0 /* mask RecursiveDirectoryTree::current() */
 #define SPL_FILE_DIR_CURRENT(intern,mode)  ((intern->flags&SPL_FILE_DIR_CURRENT_MODE_MASK)==mode)
diff --git a/ext/spl/tests/dit_002.phpt b/ext/spl/tests/dit_002.phpt
new file mode 100755 (executable)
index 0000000..f18d119
--- /dev/null
@@ -0,0 +1,50 @@
+--TEST--
+SPL: DirectoryIterator defaults
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+$classes = array(
+       'DirectoryIterator' => 0,
+       'RecursiveDirectoryIterator' => 1,
+);
+
+foreach ($classes as $class => $flags) {
+       echo "===$class===\n";
+       $ref = new ReflectionClass($class);
+       $obj = $ref->newInstance('.');
+       echo get_class($obj->current()) . "\n";
+       if ($flags)
+       {
+               $flags = array(
+                       RecursiveDirectoryIterator::CURRENT_AS_FILEINFO => 0,
+                       RecursiveDirectoryIterator::CURRENT_AS_SELF     => 0,
+                       RecursiveDirectoryIterator::CURRENT_AS_PATHNAME => 1,
+               );
+               foreach($flags as $flag => $isstring) {
+                       $obj = $ref->newInstance('.', $flag);
+                       if ($isstring) {
+                               $val = $obj->current();
+                               if (is_string($val)) {
+                                       var_dump(true);
+                               } else {
+                                       var_dump($val);
+                               }
+                       } else {
+                               echo get_class($obj->current()) . "\n";
+                       }
+               }
+       }
+}
+?>
+===DONE===
+--EXPECT--
+===DirectoryIterator===
+DirectoryIterator
+===RecursiveDirectoryIterator===
+SplFileInfo
+SplFileInfo
+RecursiveDirectoryIterator
+bool(true)
+===DONE===