helly Mon Sep 19 15:11:19 2005 EDT
Added files: (Branch: PHP_5_0)
/php-src/ext/spl/internal recursivecachingiterator.inc
Modified files:
/php-src NEWS
/php-src/ext/spl php_spl.c spl.php spl_iterators.c spl_iterators.h
/php-src/ext/spl/examples directorytreeiterator.inc
/php-src/ext/spl/internal cachingrecursiveiterator.inc
Log:
- MFH Renamed CachingRecursiveIterator to RecursiveCachingIterator.
# After talking to other developers it came clear that adding an upgrade
# path by 'class CachingRecursiveIterator extends RecursiveCachingIterator'
# with its constructor issuing an E_NOTICE seems a good idea.
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1760.2.482&r2=1.1760.2.483&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1760.2.482 php-src/NEWS:1.1760.2.483
--- php-src/NEWS:1.1760.2.482 Mon Sep 19 14:51:34 2005
+++ php-src/NEWS Mon Sep 19 15:11:16 2005
@@ -1,6 +1,7 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? ????, PHP 5.0.6
+- Renamed CachingRecursiveIterator to RecursiveCachingIterator. (Marcus)
- Fixed bug #34478 (Incorrect parsing of url's fragment (#...)). (Dmitry)
- Fixed bug #34450 (Segfault when calling mysqli_close() in destructor). (Tony)
- Fixed bug #34449 (ext/soap: XSD_ANYXML functionality not exposed). (Dmitry)
http://cvs.php.net/diff.php/php-src/ext/spl/php_spl.c?r1=1.28.2.1&r2=1.28.2.2&ty=u
Index: php-src/ext/spl/php_spl.c
diff -u php-src/ext/spl/php_spl.c:1.28.2.1 php-src/ext/spl/php_spl.c:1.28.2.2
--- php-src/ext/spl/php_spl.c:1.28.2.1 Wed Aug 24 06:18:15 2005
+++ php-src/ext/spl/php_spl.c Mon Sep 19 15:11:18 2005
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_spl.c,v 1.28.2.1 2005/08/24 10:18:15 johannes Exp $ */
+/* $Id: php_spl.c,v 1.28.2.2 2005/09/19 19:11:18 helly Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -160,11 +160,11 @@
SPL_ADD_CLASS(ArrayIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(ArrayObject, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(CachingIterator, z_list, sub, allow, ce_flags); \
- SPL_ADD_CLASS(CachingRecursiveIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(DirectoryIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(FilterIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(LimitIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(ParentIterator, z_list, sub, allow, ce_flags); \
+ SPL_ADD_CLASS(RecursiveCachingIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(RecursiveDirectoryIterator, z_list, sub, allow,
ce_flags); \
SPL_ADD_CLASS(RecursiveIterator, z_list, sub, allow, ce_flags); \
SPL_ADD_CLASS(RecursiveIteratorIterator, z_list, sub, allow, ce_flags);
\
http://cvs.php.net/diff.php/php-src/ext/spl/spl.php?r1=1.25.2.2&r2=1.25.2.3&ty=u
Index: php-src/ext/spl/spl.php
diff -u php-src/ext/spl/spl.php:1.25.2.2 php-src/ext/spl/spl.php:1.25.2.3
--- php-src/ext/spl/spl.php:1.25.2.2 Fri Oct 1 06:36:50 2004
+++ php-src/ext/spl/spl.php Mon Sep 19 15:11:18 2005
@@ -424,7 +424,7 @@
/** \ingroup SPL
* \brief The recursive version of the CachingIterator.
*/
-class CachingRecursiveIterator extends CachingIterator implements
RecursiveIterator
+class RecursiveCachingIterator extends CachingIterator implements
RecursiveIterator
{
/** Construct an instance form a RecursiveIterator.
*
http://cvs.php.net/diff.php/php-src/ext/spl/spl_iterators.c?r1=1.38.2.10&r2=1.38.2.11&ty=u
Index: php-src/ext/spl/spl_iterators.c
diff -u php-src/ext/spl/spl_iterators.c:1.38.2.10
php-src/ext/spl/spl_iterators.c:1.38.2.11
--- php-src/ext/spl/spl_iterators.c:1.38.2.10 Sat Mar 12 18:12:36 2005
+++ php-src/ext/spl/spl_iterators.c Mon Sep 19 15:11:18 2005
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_iterators.c,v 1.38.2.10 2005/03/12 23:12:36 helly Exp $ */
+/* $Id: spl_iterators.c,v 1.38.2.11 2005/09/19 19:11:18 helly Exp $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -44,6 +44,7 @@
zend_class_entry *spl_ce_LimitIterator;
zend_class_entry *spl_ce_CachingIterator;
zend_class_entry *spl_ce_CachingRecursiveIterator;
+zend_class_entry *spl_ce_RecursiveCachingIterator;
function_entry spl_funcs_RecursiveIterator[] = {
SPL_ABSTRACT_ME(RecursiveIterator, hasChildren, NULL)
@@ -586,7 +587,7 @@
break;
}
case DIT_CachingIterator:
- case DIT_CachingRecursiveIterator: {
+ case DIT_RecursiveCachingIterator: {
long flags = CIT_CALL_TOSTRING;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"O|l", &zobject, ce_inner, &flags) == FAILURE) {
php_set_error_handling(EH_NORMAL, NULL
TSRMLS_CC);
@@ -659,7 +660,7 @@
efree(intern->current.str_key);
intern->current.str_key = NULL;
}
- if (intern->dit_type == DIT_CachingIterator || intern->dit_type ==
DIT_CachingRecursiveIterator) {
+ if (intern->dit_type == DIT_CachingIterator || intern->dit_type ==
DIT_RecursiveCachingIterator) {
if (intern->u.caching.zstr) {
zval_ptr_dtor(&intern->u.caching.zstr);
intern->u.caching.zstr = NULL;
@@ -1117,7 +1118,7 @@
{
if (spl_dual_it_fetch(intern, 1 TSRMLS_CC) == SUCCESS) {
intern->u.caching.flags |= CIT_VALID;
- if (intern->dit_type == DIT_CachingRecursiveIterator) {
+ if (intern->dit_type == DIT_RecursiveCachingIterator) {
zval *retval, *zchildren, zflags;
zend_call_method_with_0_params(&intern->inner.zobject,
intern->inner.ce, NULL, "haschildren", &retval);
if (zend_is_true(retval)) {
@@ -1131,7 +1132,7 @@
} else {
INIT_PZVAL(&zflags);
ZVAL_LONG(&zflags,
intern->u.caching.flags & CIT_PUBLIC);
-
spl_instantiate_arg_ex2(spl_ce_CachingRecursiveIterator,
&intern->u.caching.zchildren, 1, zchildren, &zflags TSRMLS_CC);
+
spl_instantiate_arg_ex2(spl_ce_RecursiveCachingIterator,
&intern->u.caching.zchildren, 1, zchildren, &zflags TSRMLS_CC);
zval_ptr_dtor(&zchildren);
}
}
@@ -1280,16 +1281,16 @@
{NULL, NULL, NULL}
};
-/* {{{ proto CachingRecursiveIterator::__construct(RecursiveIterator it [,
flags = CIT_CALL_TOSTRING])
+/* {{{ proto RecursiveCachingIterator::__construct(RecursiveIterator it [,
flags = CIT_CALL_TOSTRING])
Create an iterator from a RecursiveIterator */
-SPL_METHOD(CachingRecursiveIterator, __construct)
+SPL_METHOD(RecursiveCachingIterator, __construct)
{
- spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU,
spl_ce_RecursiveIterator, DIT_CachingRecursiveIterator);
+ spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU,
spl_ce_RecursiveIterator, DIT_RecursiveCachingIterator);
} /* }}} */
-/* {{{ proto bolean CachingRecursiveIterator::hasChildren()
+/* {{{ proto bolean RecursiveCachingIterator::hasChildren()
Check whether the current element of the inner iterator has children */
-SPL_METHOD(CachingRecursiveIterator, hasChildren)
+SPL_METHOD(RecursiveCachingIterator, hasChildren)
{
spl_dual_it_object *intern;
@@ -1298,9 +1299,9 @@
RETURN_BOOL(intern->u.caching.zchildren);
} /* }}} */
-/* {{{ proto CachingRecursiveIterator CachingRecursiveIterator::getChildren()
- Return the inner iterator's children as a CachingRecursiveIterator */
-SPL_METHOD(CachingRecursiveIterator, getChildren)
+/* {{{ proto RecursiveCachingIterator RecursiveCachingIterator::getChildren()
+ Return the inner iterator's children as a RecursiveCachingIterator */
+SPL_METHOD(RecursiveCachingIterator, getChildren)
{
spl_dual_it_object *intern;
@@ -1319,10 +1320,23 @@
ZEND_ARG_INFO(0, flags)
ZEND_END_ARG_INFO();
+static zend_function_entry spl_funcs_RecursiveCachingIterator[] = {
+ SPL_ME(RecursiveCachingIterator, __construct,
arginfo_caching_rec_it___construct, ZEND_ACC_PUBLIC)
+ SPL_ME(RecursiveCachingIterator, hasChildren, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(RecursiveCachingIterator, getChildren, NULL, ZEND_ACC_PUBLIC)
+ {NULL, NULL, NULL}
+};
+
+/* {{{ proto CachingRecursiveIterator::__construct(RecursiveIterator it [,
flags = CIT_CALL_TOSTRING])
+ Deprecated: Create an iterator from a RecursiveIterator */
+SPL_METHOD(CachingRecursiveIterator, __construct)
+{
+ spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU,
spl_ce_RecursiveIterator, DIT_RecursiveCachingIterator);
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "CachingRecursiveIterator is
deprecated, use RecursiveCachingIterator");
+} /* }}} */
+
static zend_function_entry spl_funcs_CachingRecursiveIterator[] = {
SPL_ME(CachingRecursiveIterator, __construct,
arginfo_caching_rec_it___construct, ZEND_ACC_PUBLIC)
- SPL_ME(CachingRecursiveIterator, hasChildren, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(CachingRecursiveIterator, getChildren, NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
@@ -1370,9 +1384,11 @@
REGISTER_LONG_CONSTANT("CIT_CALL_TOSTRING", (long)CIT_CALL_TOSTRING,
CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("CIT_CATCH_GET_CHILD",
(long)CIT_CATCH_GET_CHILD, CONST_CS | CONST_PERSISTENT);
- REGISTER_SPL_SUB_CLASS_EX(CachingRecursiveIterator, CachingIterator,
spl_dual_it_new, spl_funcs_CachingRecursiveIterator);
- REGISTER_SPL_IMPLEMENTS(CachingRecursiveIterator, RecursiveIterator);
+ REGISTER_SPL_SUB_CLASS_EX(RecursiveCachingIterator, CachingIterator,
spl_dual_it_new, spl_funcs_RecursiveCachingIterator);
+ REGISTER_SPL_IMPLEMENTS(RecursiveCachingIterator, RecursiveIterator);
+ REGISTER_SPL_SUB_CLASS_EX(CachingRecursiveIterator,
RecursiveCachingIterator, spl_dual_it_new, spl_funcs_CachingRecursiveIterator);
+
return SUCCESS;
}
/* }}} */
http://cvs.php.net/diff.php/php-src/ext/spl/spl_iterators.h?r1=1.9&r2=1.9.2.1&ty=u
Index: php-src/ext/spl/spl_iterators.h
diff -u php-src/ext/spl/spl_iterators.h:1.9
php-src/ext/spl/spl_iterators.h:1.9.2.1
--- php-src/ext/spl/spl_iterators.h:1.9 Mon Mar 8 13:05:41 2004
+++ php-src/ext/spl/spl_iterators.h Mon Sep 19 15:11:18 2005
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_iterators.h,v 1.9 2004/03/08 18:05:41 helly Exp $ */
+/* $Id: spl_iterators.h,v 1.9.2.1 2005/09/19 19:11:18 helly Exp $ */
#ifndef SPL_ITERATORS_H
#define SPL_ITERATORS_H
@@ -31,7 +31,7 @@
extern zend_class_entry *spl_ce_SeekableIterator;
extern zend_class_entry *spl_ce_LimitIterator;
extern zend_class_entry *spl_ce_CachingIterator;
-extern zend_class_entry *spl_ce_CachingRecursiveIterator;
+extern zend_class_entry *spl_ce_RecursiveCachingIterator;
PHP_MINIT_FUNCTION(spl_iterators);
@@ -39,7 +39,7 @@
DIT_Default = 0,
DIT_LimitIterator,
DIT_CachingIterator,
- DIT_CachingRecursiveIterator
+ DIT_RecursiveCachingIterator
} dual_it_type;
enum {
http://cvs.php.net/diff.php/php-src/ext/spl/examples/directorytreeiterator.inc?r1=1.12&r2=1.12.2.1&ty=u
Index: php-src/ext/spl/examples/directorytreeiterator.inc
diff -u php-src/ext/spl/examples/directorytreeiterator.inc:1.12
php-src/ext/spl/examples/directorytreeiterator.inc:1.12.2.1
--- php-src/ext/spl/examples/directorytreeiterator.inc:1.12 Mon May 10
13:26:03 2004
+++ php-src/ext/spl/examples/directorytreeiterator.inc Mon Sep 19 15:11:18 2005
@@ -21,7 +21,7 @@
*/
function __construct($path)
{
- parent::__construct(new CachingRecursiveIterator(new
RecursiveDirectoryIterator($path), CIT_CALL_TOSTRING|CIT_CATCH_GET_CHILD), 1);
+ parent::__construct(new RecursiveCachingIterator(new
RecursiveDirectoryIterator($path), CIT_CALL_TOSTRING|CIT_CATCH_GET_CHILD), 1);
}
/** @return the current element prefixed with ASCII graphics
http://cvs.php.net/diff.php/php-src/ext/spl/internal/cachingrecursiveiterator.inc?r1=1.1&r2=1.1.2.1&ty=u
Index: php-src/ext/spl/internal/cachingrecursiveiterator.inc
diff -u php-src/ext/spl/internal/cachingrecursiveiterator.inc:1.1
php-src/ext/spl/internal/cachingrecursiveiterator.inc:1.1.2.1
--- php-src/ext/spl/internal/cachingrecursiveiterator.inc:1.1 Sat May 8
08:24:15 2004
+++ php-src/ext/spl/internal/cachingrecursiveiterator.inc Mon Sep 19
15:11:19 2005
@@ -1,53 +1,28 @@
<?php
-class CachingRecursiveIterator extends CachingIterator implements
RecursiveIterator
-{
- protected $hasChildren;
- protected $getChildren;
-
- function __construct(RecursiveIterator $it, $flags = CIT_CALL_TOSTRING)
- {
- parent::__construct($it, $flags);
- }
-
- function rewind();
- {
- $this->hasChildren = false;
- $this->getChildren = NULL;
- parent::rewind();
- }
+/** @file cachingrecursiveiterator.inc
+ * @ingroup Examples
+ * @brief class CachingRecursiveIterator
+ * @author Marcus Boerger
+ * @date 2003 - 2005
+ *
+ * SPL - Standard PHP Library
+ */
- function next()
- {
- if ($this->hasChildren = $this->it->hasChildren()) {
- try {
- //$this->getChildren = new
CachingRecursiveIterator($this->it->getChildren(), $this->flags);
- // workaround memleaks...
- $child = $this->it->getChildren();
- $this->getChildren = new
CachingRecursiveIterator($child, $this->flags);
- }
- catch(Exception $e) {
- if (!$this->flags & CIT_CATCH_GET_CHILD) {
- throw $e;
- }
- $this->hasChildren = false;
- $this->getChildren = NULL;
- }
- } else {
- $this->getChildren = NULL;
- }
- parent::next();
- }
+/** @ingroup Examples
+ * @brief Compatibility to PHP 5.0
+ * @author Marcus Boerger
+ * @version 1.2
+ * @deprecated
+ *
+ * Class RecursiveCachingIterator was named CachingRecursiveIterator until
+ * PHP 5.0.6.
+ *
+ * @see RecursiveCachingIterator
+ */
- function hasChildren()
- {
- return $this->hasChildren;
- }
-
- function getChildren()
- {
- return $this->getChildren;
- }
+class CachingRecursiveIterator extends RecursiveCachingIterator
+{
}
?>
\ No newline at end of file
http://cvs.php.net/co.php/php-src/ext/spl/internal/recursivecachingiterator.inc?r=1.1&p=1
Index: php-src/ext/spl/internal/recursivecachingiterator.inc
+++ php-src/ext/spl/internal/recursivecachingiterator.inc
<?php
/** @file recursivecachingiterator.inc
* @ingroup SPL
* @brief class RecursiveCachingIterator
* @author Marcus Boerger
* @date 2003 - 2005
*
* SPL - Standard PHP Library
*/
/**
* @brief Cached recursive iteration over another Iterator
* @author Marcus Boerger
* @version 1.2
* @since PHP 5.1
*
* @see CachingIterator
*/
class RecursiveCachingIterator extends CachingIterator implements
RecursiveIterator
{
private $hasChildren;
private $getChildren;
/** Construct from another iterator
*
* @param it Iterator to cache
* @param flags Bitmask:
* - CALL_TOSTRING (whether to call __toString() for
every element)
* - CATCH_GET_CHILD (whether to catch exceptions when
trying to get childs)
*/
function __construct(RecursiveIterator $it, $flags =
self::CALL_TOSTRING)
{
parent::__construct($it, $flags);
}
/** Rewind Iterator
*/
function rewind();
{
$this->hasChildren = false;
$this->getChildren = NULL;
parent::rewind();
}
/** Forward to next element if necessary then an Iterator for the
Children
* will be created.
*/
function next()
{
if ($this->hasChildren = $this->it->hasChildren())
{
try
{
$child = $this->it->getChildren();
if (!$this->ref)
{
$this->ref = new ReflectionClass($this);
}
$this->getChildren = $ref->newInstance($child,
$this->flags);
}
catch(Exception $e)
{
if (!$this->flags & self::CATCH_GET_CHILD)
{
throw $e;
}
$this->hasChildren = false;
$this->getChildren = NULL;
}
} else
{
$this->getChildren = NULL;
}
parent::next();
}
private $ref;
/** @return whether the current element has children
* @note The check whether the Iterator for the children can be created
was
* already executed. Hence when flag CATCH_GET_CHILD was given in
* constructor this fucntion returns false so that getChildren
does
* not try to access those children.
*/
function hasChildren()
{
return $this->hasChildren;
}
/** @return An Iterator for the children
*/
function getChildren()
{
return $this->getChildren;
}
}
?>
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php