From: Marcus Boerger Date: Wed, 13 Feb 2008 12:23:26 +0000 (+0000) Subject: - MFH Make this behave like in <= 5.2.5 and test for it X-Git-Tag: php-5.2.6RC1~82 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=697b79f6a332bfbbe862fae0beeb34ac58565705;p=php - MFH Make this behave like in <= 5.2.5 and test for it --- diff --git a/ext/spl/spl.php b/ext/spl/spl.php index 2be8057fb9..43c29e9877 100755 --- a/ext/spl/spl.php +++ b/ext/spl/spl.php @@ -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() */ diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index 69c4a8654d..703eae203b 100755 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -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); diff --git a/ext/spl/spl_directory.h b/ext/spl/spl_directory.h index 56a7c48d7b..839b36f510 100755 --- a/ext/spl/spl_directory.h +++ b/ext/spl/spl_directory.h @@ -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 index 0000000000..f18d1198dd --- /dev/null +++ b/ext/spl/tests/dit_002.phpt @@ -0,0 +1,50 @@ +--TEST-- +SPL: DirectoryIterator defaults +--SKIPIF-- + +--FILE-- + 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===