Declare tentative return types in ext/spl - part 3 (#7239)

This commit is contained in:
Máté Kocsis 2021-07-16 12:09:05 +02:00 committed by GitHub
parent f2e374c881
commit b3e0888129
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
41 changed files with 431 additions and 406 deletions

View File

@ -4,28 +4,28 @@
class EmptyIterator implements Iterator
{
/** @return mixed */
public function current() {}
/** @tentative-return-type */
public function current(): never {}
/** @return void */
public function next() {}
/** @tentative-return-type */
public function next(): void {}
/** @return mixed */
public function key() {}
/** @tentative-return-type */
public function key(): never {}
/** @return bool */
public function valid() {}
/** @tentative-return-type */
public function valid(): bool {}
/** @return void */
public function rewind() {}
/** @tentative-return-type */
public function rewind(): void {}
}
class CallbackFilterIterator extends FilterIterator
{
public function __construct(Iterator $iterator, callable $callback) {}
/** @return bool */
public function accept() {}
/** @tentative-return-type */
public function accept(): bool {}
}
class RecursiveCallbackFilterIterator extends CallbackFilterIterator implements RecursiveIterator
@ -33,132 +33,132 @@ class RecursiveCallbackFilterIterator extends CallbackFilterIterator implements
public function __construct(RecursiveIterator $iterator, callable $callback) {}
/**
* @return bool
* @tentative-return-type
* @implementation-alias RecursiveFilterIterator::hasChildren
*/
public function hasChildren() {}
public function hasChildren(): bool {}
/** @return RecursiveCallbackFilterIterator */
public function getChildren() {}
/** @tentative-return-type */
public function getChildren(): RecursiveCallbackFilterIterator {}
}
interface RecursiveIterator extends Iterator
{
/** @return bool */
public function hasChildren();
/** @tentative-return-type */
public function hasChildren(): bool;
/** @return RecursiveIterator|null */
public function getChildren();
/** @tentative-return-type */
public function getChildren(): ?RecursiveIterator;
}
class RecursiveIteratorIterator implements OuterIterator
{
public function __construct(Traversable $iterator, int $mode = RecursiveIteratorIterator::LEAVES_ONLY, int $flags = 0) {}
/** @return void */
public function rewind() {}
/** @tentative-return-type */
public function rewind(): void {}
/** @return bool */
public function valid() {}
/** @tentative-return-type */
public function valid(): bool {}
/** @return mixed */
public function key() {}
/** @tentative-return-type */
public function key(): mixed {}
/** @return mixed */
public function current() {}
/** @tentative-return-type */
public function current(): mixed {}
/** @return void */
public function next() {}
/** @tentative-return-type */
public function next(): void {}
/** @return int */
public function getDepth() {}
/** @tentative-return-type */
public function getDepth(): int {}
/** @return RecursiveIterator|null */
public function getSubIterator(?int $level = null) {}
/** @tentative-return-type */
public function getSubIterator(?int $level = null): ?RecursiveIterator {}
/** @return RecursiveIterator */
public function getInnerIterator() {}
/** @tentative-return-type */
public function getInnerIterator(): RecursiveIterator {}
/** @return void */
public function beginIteration() {}
/** @tentative-return-type */
public function beginIteration(): void {}
/** @return void */
public function endIteration() {}
/** @tentative-return-type */
public function endIteration(): void {}
/** @return bool|null */
public function callHasChildren() {}
/** @tentative-return-type */
public function callHasChildren(): bool {}
/** @return RecursiveIterator|null */
public function callGetChildren() {}
/** @tentative-return-type */
public function callGetChildren(): ?RecursiveIterator {}
/** @return void */
public function beginChildren() {}
/** @tentative-return-type */
public function beginChildren(): void {}
/** @return void */
public function endChildren() {}
/** @tentative-return-type */
public function endChildren(): void {}
/** @return void */
public function nextElement() {}
/** @tentative-return-type */
public function nextElement(): void {}
/** @return void */
public function setMaxDepth(int $maxDepth = -1) {}
/** @tentative-return-type */
public function setMaxDepth(int $maxDepth = -1): void {}
/** @return int|false */
public function getMaxDepth() {}
/** @tentative-return-type */
public function getMaxDepth(): int|false {}
}
interface OuterIterator extends Iterator
{
/** @return Iterator|null */
public function getInnerIterator();
/** @tentative-return-type */
public function getInnerIterator(): ?Iterator;
}
class IteratorIterator implements OuterIterator
{
public function __construct(Traversable $iterator, ?string $class = null) {}
/** @return Iterator|null */
public function getInnerIterator() {}
/** @tentative-return-type */
public function getInnerIterator(): ?Iterator {}
/** @return void */
public function rewind() {}
/** @tentative-return-type */
public function rewind(): void {}
/** @return bool */
public function valid() {}
/** @tentative-return-type */
public function valid(): bool {}
/** @return mixed */
public function key() {}
/** @tentative-return-type */
public function key(): mixed {}
/** @return mixed */
public function current() {}
/** @tentative-return-type */
public function current(): mixed {}
/** @return void */
public function next() {}
/** @tentative-return-type */
public function next(): void {}
}
abstract class FilterIterator extends IteratorIterator
{
/** @return bool */
abstract public function accept();
/** @tentative-return-type */
abstract public function accept(): bool;
public function __construct(Iterator $iterator) {}
/** @return void */
public function rewind() {}
/** @tentative-return-type */
public function rewind(): void {}
/** @return void */
public function next() {}
/** @tentative-return-type */
public function next(): void {}
}
abstract class RecursiveFilterIterator extends FilterIterator implements RecursiveIterator
{
public function __construct(RecursiveIterator $iterator) {}
/** @return bool */
public function hasChildren() {}
/** @tentative-return-type */
public function hasChildren(): bool {}
/** @return RecursiveFilterIterator|null */
public function getChildren() {}
/** @tentative-return-type */
public function getChildren(): ?RecursiveFilterIterator {}
}
class ParentIterator extends RecursiveFilterIterator
@ -166,156 +166,156 @@ class ParentIterator extends RecursiveFilterIterator
public function __construct(RecursiveIterator $iterator) {}
/**
* @return bool
* @tentative-return-type
* @implementation-alias RecursiveFilterIterator::hasChildren
*/
public function accept() {}
public function accept(): bool {}
}
interface SeekableIterator extends Iterator
{
/** @return void */
public function seek(int $offset);
/** @tentative-return-type */
public function seek(int $offset): void;
}
class LimitIterator extends IteratorIterator
{
public function __construct(Iterator $iterator, int $offset = 0, int $limit = -1) {}
/** @return void */
public function rewind() {}
/** @tentative-return-type */
public function rewind(): void {}
/** @return bool */
public function valid() {}
/** @tentative-return-type */
public function valid(): bool {}
/** @return void */
public function next() {}
/** @tentative-return-type */
public function next(): void {}
/** @return int */
public function seek(int $offset) {}
/** @tentative-return-type */
public function seek(int $offset): int {}
/** @return int */
public function getPosition() {}
/** @tentative-return-type */
public function getPosition(): int {}
}
class CachingIterator extends IteratorIterator implements ArrayAccess, Countable, Stringable
{
public function __construct(Iterator $iterator, int $flags = CachingIterator::CALL_TOSTRING) {}
/** @return void */
public function rewind() {}
/** @tentative-return-type */
public function rewind(): void {}
/** @return bool */
public function valid() {}
/** @tentative-return-type */
public function valid(): bool {}
/** @return void */
public function next() {}
/** @tentative-return-type */
public function next(): void {}
/** @return bool */
public function hasNext() {}
/** @tentative-return-type */
public function hasNext(): bool {}
public function __toString(): string {}
/** @return int */
public function getFlags() {}
/** @tentative-return-type */
public function getFlags(): int {}
/** @return void */
public function setFlags(int $flags) {}
/** @tentative-return-type */
public function setFlags(int $flags): void {}
/**
* @param string $key
* @return mixed
* @tentative-return-type
*/
public function offsetGet($key) {}
public function offsetGet($key): mixed {}
/**
* @param string $key
* @return void
* @tentative-return-type
*/
public function offsetSet($key, mixed $value) {}
public function offsetSet($key, mixed $value): void {}
/**
* @param string $key
* @return void
* @tentative-return-type
*/
public function offsetUnset($key) {}
public function offsetUnset($key): void {}
/**
* @param string $key
* @return bool
* @tentative-return-type
*/
public function offsetExists($key) {}
public function offsetExists($key): bool {}
/** @return array */
public function getCache() {}
/** @tentative-return-type */
public function getCache(): array {}
/** @return int */
public function count() {}
/** @tentative-return-type */
public function count(): int {}
}
class RecursiveCachingIterator extends CachingIterator implements RecursiveIterator
{
public function __construct(Iterator $iterator, int $flags = RecursiveCachingIterator::CALL_TOSTRING) {}
/** @return bool */
public function hasChildren() {}
/** @tentative-return-type */
public function hasChildren(): bool {}
/** @return RecursiveCachingIterator|null */
public function getChildren() {}
/** @tentative-return-type */
public function getChildren(): ?RecursiveCachingIterator {}
}
class NoRewindIterator extends IteratorIterator
{
public function __construct(Iterator $iterator) {}
/** @return void */
public function rewind() {}
/** @tentative-return-type */
public function rewind(): void {}
/** @return bool */
public function valid() {}
/** @tentative-return-type */
public function valid(): bool {}
/** @return mixed */
public function key() {}
/** @tentative-return-type */
public function key(): mixed {}
/** @return mixed */
public function current() {}
/** @tentative-return-type */
public function current(): mixed {}
/** @return void */
public function next() {}
/** @tentative-return-type */
public function next(): void {}
}
class AppendIterator extends IteratorIterator
{
public function __construct() {}
/** @return void */
public function append(Iterator $iterator) {}
/** @tentative-return-type */
public function append(Iterator $iterator): void {}
/** @return void */
public function rewind() {}
/** @tentative-return-type */
public function rewind(): void {}
/** @return bool */
public function valid() {}
/** @tentative-return-type */
public function valid(): bool {}
/** @return mixed */
public function current() {}
/** @tentative-return-type */
public function current(): mixed {}
/** @return void */
public function next() {}
/** @tentative-return-type */
public function next(): void {}
/** @return int|null */
public function getIteratorIndex() {}
/** @tentative-return-type */
public function getIteratorIndex(): ?int {}
/** @return ArrayIterator */
public function getArrayIterator() {}
/** @tentative-return-type */
public function getArrayIterator(): ArrayIterator {}
}
class InfiniteIterator extends IteratorIterator
{
public function __construct(Iterator $iterator) {}
/** @return void */
public function next() {}
/** @tentative-return-type */
public function next(): void {}
}
class RegexIterator extends FilterIterator
@ -324,46 +324,46 @@ class RegexIterator extends FilterIterator
public function __construct(Iterator $iterator, string $pattern, int $mode = RegexIterator::MATCH, int $flags = 0, int $pregFlags = 0) {}
/** @return bool */
public function accept() {}
/** @tentative-return-type */
public function accept(): bool {}
/** @return int */
public function getMode() {}
/** @tentative-return-type */
public function getMode(): int {}
/** @return void */
public function setMode(int $mode) {}
/** @tentative-return-type */
public function setMode(int $mode): void {}
/** @return int */
public function getFlags() {}
/** @tentative-return-type */
public function getFlags(): int {}
/** @return void */
public function setFlags(int $flags) {}
/** @tentative-return-type */
public function setFlags(int $flags): void {}
/** @return string */
public function getRegex() {}
/** @tentative-return-type */
public function getRegex(): string {}
/** @return int */
public function getPregFlags() {}
/** @tentative-return-type */
public function getPregFlags(): int {}
/** @return void */
public function setPregFlags(int $pregFlags) {}
/** @tentative-return-type */
public function setPregFlags(int $pregFlags): void {}
}
class RecursiveRegexIterator extends RegexIterator implements RecursiveIterator
{
public function __construct(RecursiveIterator $iterator, string $pattern, int $mode = RecursiveRegexIterator::MATCH, int $flags = 0, int $pregFlags = 0) {}
/** @return bool */
public function accept() {}
/** @tentative-return-type */
public function accept(): bool {}
/**
* @return bool
* @tentative-return-type
* @implementation-alias RecursiveFilterIterator::hasChildren
*/
public function hasChildren() {}
public function hasChildren(): bool {}
/** @return RecursiveRegexIterator */
public function getChildren() {}
/** @tentative-return-type */
public function getChildren(): RecursiveRegexIterator {}
}
class RecursiveTreeIterator extends RecursiveIteratorIterator
@ -376,24 +376,24 @@ class RecursiveTreeIterator extends RecursiveIteratorIterator
int $mode = RecursiveTreeIterator::SELF_FIRST
) {}
/** @return mixed */
public function key() {}
/** @tentative-return-type */
public function key(): mixed {}
/** @return mixed */
public function current() {}
/** @tentative-return-type */
public function current(): mixed {}
/** @return string */
public function getPrefix() {}
/** @tentative-return-type */
public function getPrefix(): string {}
/** @return void */
public function setPostfix(string $postfix) {}
/** @tentative-return-type */
public function setPostfix(string $postfix): void {}
/** @return void */
public function setPrefixPart(int $part, string $value) {}
/** @tentative-return-type */
public function setPrefixPart(int $part, string $value): void {}
/** @return string */
public function getEntry() {}
/** @tentative-return-type */
public function getEntry(): string {}
/** @return string */
public function getPostfix() {}
/** @tentative-return-type */
public function getPostfix(): string {}
}

View File

@ -1,36 +1,40 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: e2b69f8f12c782da28c95f16e04483bd6588e6ab */
* Stub hash: 889a6eed2d62fbb6af168146840189d37765dbaa */
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_EmptyIterator_current, 0, 0, 0)
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_EmptyIterator_current, 0, 0, never, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_EmptyIterator_next arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_EmptyIterator_next, 0, 0, IS_VOID, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_EmptyIterator_key arginfo_class_EmptyIterator_current
#define arginfo_class_EmptyIterator_valid arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_EmptyIterator_valid, 0, 0, _IS_BOOL, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_EmptyIterator_rewind arginfo_class_EmptyIterator_current
#define arginfo_class_EmptyIterator_rewind arginfo_class_EmptyIterator_next
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CallbackFilterIterator___construct, 0, 0, 2)
ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_CallbackFilterIterator_accept arginfo_class_EmptyIterator_current
#define arginfo_class_CallbackFilterIterator_accept arginfo_class_EmptyIterator_valid
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveCallbackFilterIterator___construct, 0, 0, 2)
ZEND_ARG_OBJ_INFO(0, iterator, RecursiveIterator, 0)
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_RecursiveCallbackFilterIterator_hasChildren arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveCallbackFilterIterator_hasChildren arginfo_class_EmptyIterator_valid
#define arginfo_class_RecursiveCallbackFilterIterator_getChildren arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveCallbackFilterIterator_getChildren, 0, 0, RecursiveCallbackFilterIterator, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_RecursiveIterator_hasChildren arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveIterator_hasChildren arginfo_class_EmptyIterator_valid
#define arginfo_class_RecursiveIterator_getChildren arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveIterator_getChildren, 0, 0, RecursiveIterator, 1)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveIteratorIterator___construct, 0, 0, 1)
ZEND_ARG_OBJ_INFO(0, iterator, Traversable, 0)
@ -38,86 +42,92 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveIteratorIterator___construct, 0, 0
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "0")
ZEND_END_ARG_INFO()
#define arginfo_class_RecursiveIteratorIterator_rewind arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveIteratorIterator_rewind arginfo_class_EmptyIterator_next
#define arginfo_class_RecursiveIteratorIterator_valid arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveIteratorIterator_valid arginfo_class_EmptyIterator_valid
#define arginfo_class_RecursiveIteratorIterator_key arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_RecursiveIteratorIterator_key, 0, 0, IS_MIXED, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_RecursiveIteratorIterator_current arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveIteratorIterator_current arginfo_class_RecursiveIteratorIterator_key
#define arginfo_class_RecursiveIteratorIterator_next arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveIteratorIterator_next arginfo_class_EmptyIterator_next
#define arginfo_class_RecursiveIteratorIterator_getDepth arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_RecursiveIteratorIterator_getDepth, 0, 0, IS_LONG, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveIteratorIterator_getSubIterator, 0, 0, 0)
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveIteratorIterator_getSubIterator, 0, 0, RecursiveIterator, 1)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, level, IS_LONG, 1, "null")
ZEND_END_ARG_INFO()
#define arginfo_class_RecursiveIteratorIterator_getInnerIterator arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveIteratorIterator_getInnerIterator, 0, 0, RecursiveIterator, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_RecursiveIteratorIterator_beginIteration arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveIteratorIterator_beginIteration arginfo_class_EmptyIterator_next
#define arginfo_class_RecursiveIteratorIterator_endIteration arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveIteratorIterator_endIteration arginfo_class_EmptyIterator_next
#define arginfo_class_RecursiveIteratorIterator_callHasChildren arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveIteratorIterator_callHasChildren arginfo_class_EmptyIterator_valid
#define arginfo_class_RecursiveIteratorIterator_callGetChildren arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveIteratorIterator_callGetChildren arginfo_class_RecursiveIterator_getChildren
#define arginfo_class_RecursiveIteratorIterator_beginChildren arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveIteratorIterator_beginChildren arginfo_class_EmptyIterator_next
#define arginfo_class_RecursiveIteratorIterator_endChildren arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveIteratorIterator_endChildren arginfo_class_EmptyIterator_next
#define arginfo_class_RecursiveIteratorIterator_nextElement arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveIteratorIterator_nextElement arginfo_class_EmptyIterator_next
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveIteratorIterator_setMaxDepth, 0, 0, 0)
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_RecursiveIteratorIterator_setMaxDepth, 0, 0, IS_VOID, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, maxDepth, IS_LONG, 0, "-1")
ZEND_END_ARG_INFO()
#define arginfo_class_RecursiveIteratorIterator_getMaxDepth arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_RecursiveIteratorIterator_getMaxDepth, 0, 0, MAY_BE_LONG|MAY_BE_FALSE)
ZEND_END_ARG_INFO()
#define arginfo_class_OuterIterator_getInnerIterator arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_OuterIterator_getInnerIterator, 0, 0, Iterator, 1)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IteratorIterator___construct, 0, 0, 1)
ZEND_ARG_OBJ_INFO(0, iterator, Traversable, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, class, IS_STRING, 1, "null")
ZEND_END_ARG_INFO()
#define arginfo_class_IteratorIterator_getInnerIterator arginfo_class_EmptyIterator_current
#define arginfo_class_IteratorIterator_getInnerIterator arginfo_class_OuterIterator_getInnerIterator
#define arginfo_class_IteratorIterator_rewind arginfo_class_EmptyIterator_current
#define arginfo_class_IteratorIterator_rewind arginfo_class_EmptyIterator_next
#define arginfo_class_IteratorIterator_valid arginfo_class_EmptyIterator_current
#define arginfo_class_IteratorIterator_valid arginfo_class_EmptyIterator_valid
#define arginfo_class_IteratorIterator_key arginfo_class_EmptyIterator_current
#define arginfo_class_IteratorIterator_key arginfo_class_RecursiveIteratorIterator_key
#define arginfo_class_IteratorIterator_current arginfo_class_EmptyIterator_current
#define arginfo_class_IteratorIterator_current arginfo_class_RecursiveIteratorIterator_key
#define arginfo_class_IteratorIterator_next arginfo_class_EmptyIterator_current
#define arginfo_class_IteratorIterator_next arginfo_class_EmptyIterator_next
#define arginfo_class_FilterIterator_accept arginfo_class_EmptyIterator_current
#define arginfo_class_FilterIterator_accept arginfo_class_EmptyIterator_valid
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_FilterIterator___construct, 0, 0, 1)
ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_FilterIterator_rewind arginfo_class_EmptyIterator_current
#define arginfo_class_FilterIterator_rewind arginfo_class_EmptyIterator_next
#define arginfo_class_FilterIterator_next arginfo_class_EmptyIterator_current
#define arginfo_class_FilterIterator_next arginfo_class_EmptyIterator_next
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveFilterIterator___construct, 0, 0, 1)
ZEND_ARG_OBJ_INFO(0, iterator, RecursiveIterator, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_RecursiveFilterIterator_hasChildren arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveFilterIterator_hasChildren arginfo_class_EmptyIterator_valid
#define arginfo_class_RecursiveFilterIterator_getChildren arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveFilterIterator_getChildren, 0, 0, RecursiveFilterIterator, 1)
ZEND_END_ARG_INFO()
#define arginfo_class_ParentIterator___construct arginfo_class_RecursiveFilterIterator___construct
#define arginfo_class_ParentIterator_accept arginfo_class_EmptyIterator_current
#define arginfo_class_ParentIterator_accept arginfo_class_EmptyIterator_valid
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SeekableIterator_seek, 0, 0, 1)
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SeekableIterator_seek, 0, 1, IS_VOID, 0)
ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
ZEND_END_ARG_INFO()
@ -127,95 +137,108 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_LimitIterator___construct, 0, 0, 1)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, limit, IS_LONG, 0, "-1")
ZEND_END_ARG_INFO()
#define arginfo_class_LimitIterator_rewind arginfo_class_EmptyIterator_current
#define arginfo_class_LimitIterator_rewind arginfo_class_EmptyIterator_next
#define arginfo_class_LimitIterator_valid arginfo_class_EmptyIterator_current
#define arginfo_class_LimitIterator_valid arginfo_class_EmptyIterator_valid
#define arginfo_class_LimitIterator_next arginfo_class_EmptyIterator_current
#define arginfo_class_LimitIterator_next arginfo_class_EmptyIterator_next
#define arginfo_class_LimitIterator_seek arginfo_class_SeekableIterator_seek
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_LimitIterator_seek, 0, 1, IS_LONG, 0)
ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_LimitIterator_getPosition arginfo_class_EmptyIterator_current
#define arginfo_class_LimitIterator_getPosition arginfo_class_RecursiveIteratorIterator_getDepth
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CachingIterator___construct, 0, 0, 1)
ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "CachingIterator::CALL_TOSTRING")
ZEND_END_ARG_INFO()
#define arginfo_class_CachingIterator_rewind arginfo_class_EmptyIterator_current
#define arginfo_class_CachingIterator_rewind arginfo_class_EmptyIterator_next
#define arginfo_class_CachingIterator_valid arginfo_class_EmptyIterator_current
#define arginfo_class_CachingIterator_valid arginfo_class_EmptyIterator_valid
#define arginfo_class_CachingIterator_next arginfo_class_EmptyIterator_current
#define arginfo_class_CachingIterator_next arginfo_class_EmptyIterator_next
#define arginfo_class_CachingIterator_hasNext arginfo_class_EmptyIterator_current
#define arginfo_class_CachingIterator_hasNext arginfo_class_EmptyIterator_valid
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_CachingIterator___toString, 0, 0, IS_STRING, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_CachingIterator_getFlags arginfo_class_EmptyIterator_current
#define arginfo_class_CachingIterator_getFlags arginfo_class_RecursiveIteratorIterator_getDepth
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CachingIterator_setFlags, 0, 0, 1)
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_CachingIterator_setFlags, 0, 1, IS_VOID, 0)
ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CachingIterator_offsetGet, 0, 0, 1)
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_CachingIterator_offsetGet, 0, 1, IS_MIXED, 0)
ZEND_ARG_INFO(0, key)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CachingIterator_offsetSet, 0, 0, 2)
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_CachingIterator_offsetSet, 0, 2, IS_VOID, 0)
ZEND_ARG_INFO(0, key)
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_CachingIterator_offsetUnset arginfo_class_CachingIterator_offsetGet
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_CachingIterator_offsetUnset, 0, 1, IS_VOID, 0)
ZEND_ARG_INFO(0, key)
ZEND_END_ARG_INFO()
#define arginfo_class_CachingIterator_offsetExists arginfo_class_CachingIterator_offsetGet
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_CachingIterator_offsetExists, 0, 1, _IS_BOOL, 0)
ZEND_ARG_INFO(0, key)
ZEND_END_ARG_INFO()
#define arginfo_class_CachingIterator_getCache arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_CachingIterator_getCache, 0, 0, IS_ARRAY, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_CachingIterator_count arginfo_class_EmptyIterator_current
#define arginfo_class_CachingIterator_count arginfo_class_RecursiveIteratorIterator_getDepth
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveCachingIterator___construct, 0, 0, 1)
ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "RecursiveCachingIterator::CALL_TOSTRING")
ZEND_END_ARG_INFO()
#define arginfo_class_RecursiveCachingIterator_hasChildren arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveCachingIterator_hasChildren arginfo_class_EmptyIterator_valid
#define arginfo_class_RecursiveCachingIterator_getChildren arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveCachingIterator_getChildren, 0, 0, RecursiveCachingIterator, 1)
ZEND_END_ARG_INFO()
#define arginfo_class_NoRewindIterator___construct arginfo_class_FilterIterator___construct
#define arginfo_class_NoRewindIterator_rewind arginfo_class_EmptyIterator_current
#define arginfo_class_NoRewindIterator_rewind arginfo_class_EmptyIterator_next
#define arginfo_class_NoRewindIterator_valid arginfo_class_EmptyIterator_current
#define arginfo_class_NoRewindIterator_valid arginfo_class_EmptyIterator_valid
#define arginfo_class_NoRewindIterator_key arginfo_class_EmptyIterator_current
#define arginfo_class_NoRewindIterator_key arginfo_class_RecursiveIteratorIterator_key
#define arginfo_class_NoRewindIterator_current arginfo_class_EmptyIterator_current
#define arginfo_class_NoRewindIterator_current arginfo_class_RecursiveIteratorIterator_key
#define arginfo_class_NoRewindIterator_next arginfo_class_EmptyIterator_current
#define arginfo_class_NoRewindIterator_next arginfo_class_EmptyIterator_next
#define arginfo_class_AppendIterator___construct arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_AppendIterator___construct, 0, 0, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_AppendIterator_append arginfo_class_FilterIterator___construct
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_AppendIterator_append, 0, 1, IS_VOID, 0)
ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_AppendIterator_rewind arginfo_class_EmptyIterator_current
#define arginfo_class_AppendIterator_rewind arginfo_class_EmptyIterator_next
#define arginfo_class_AppendIterator_valid arginfo_class_EmptyIterator_current
#define arginfo_class_AppendIterator_valid arginfo_class_EmptyIterator_valid
#define arginfo_class_AppendIterator_current arginfo_class_EmptyIterator_current
#define arginfo_class_AppendIterator_current arginfo_class_RecursiveIteratorIterator_key
#define arginfo_class_AppendIterator_next arginfo_class_EmptyIterator_current
#define arginfo_class_AppendIterator_next arginfo_class_EmptyIterator_next
#define arginfo_class_AppendIterator_getIteratorIndex arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_AppendIterator_getIteratorIndex, 0, 0, IS_LONG, 1)
ZEND_END_ARG_INFO()
#define arginfo_class_AppendIterator_getArrayIterator arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_AppendIterator_getArrayIterator, 0, 0, ArrayIterator, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_InfiniteIterator___construct arginfo_class_FilterIterator___construct
#define arginfo_class_InfiniteIterator_next arginfo_class_EmptyIterator_current
#define arginfo_class_InfiniteIterator_next arginfo_class_EmptyIterator_next
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RegexIterator___construct, 0, 0, 2)
ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
@ -225,23 +248,24 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RegexIterator___construct, 0, 0, 2)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, pregFlags, IS_LONG, 0, "0")
ZEND_END_ARG_INFO()
#define arginfo_class_RegexIterator_accept arginfo_class_EmptyIterator_current
#define arginfo_class_RegexIterator_accept arginfo_class_EmptyIterator_valid
#define arginfo_class_RegexIterator_getMode arginfo_class_EmptyIterator_current
#define arginfo_class_RegexIterator_getMode arginfo_class_RecursiveIteratorIterator_getDepth
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RegexIterator_setMode, 0, 0, 1)
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_RegexIterator_setMode, 0, 1, IS_VOID, 0)
ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_RegexIterator_getFlags arginfo_class_EmptyIterator_current
#define arginfo_class_RegexIterator_getFlags arginfo_class_RecursiveIteratorIterator_getDepth
#define arginfo_class_RegexIterator_setFlags arginfo_class_CachingIterator_setFlags
#define arginfo_class_RegexIterator_getRegex arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_RegexIterator_getRegex, 0, 0, IS_STRING, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_RegexIterator_getPregFlags arginfo_class_EmptyIterator_current
#define arginfo_class_RegexIterator_getPregFlags arginfo_class_RecursiveIteratorIterator_getDepth
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RegexIterator_setPregFlags, 0, 0, 1)
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_RegexIterator_setPregFlags, 0, 1, IS_VOID, 0)
ZEND_ARG_TYPE_INFO(0, pregFlags, IS_LONG, 0)
ZEND_END_ARG_INFO()
@ -253,11 +277,12 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveRegexIterator___construct, 0, 0, 2
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, pregFlags, IS_LONG, 0, "0")
ZEND_END_ARG_INFO()
#define arginfo_class_RecursiveRegexIterator_accept arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveRegexIterator_accept arginfo_class_EmptyIterator_valid
#define arginfo_class_RecursiveRegexIterator_hasChildren arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveRegexIterator_hasChildren arginfo_class_EmptyIterator_valid
#define arginfo_class_RecursiveRegexIterator_getChildren arginfo_class_EmptyIterator_current
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveRegexIterator_getChildren, 0, 0, RecursiveRegexIterator, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveTreeIterator___construct, 0, 0, 1)
ZEND_ARG_INFO(0, iterator)
@ -266,24 +291,24 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveTreeIterator___construct, 0, 0, 1)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "RecursiveTreeIterator::SELF_FIRST")
ZEND_END_ARG_INFO()
#define arginfo_class_RecursiveTreeIterator_key arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveTreeIterator_key arginfo_class_RecursiveIteratorIterator_key
#define arginfo_class_RecursiveTreeIterator_current arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveTreeIterator_current arginfo_class_RecursiveIteratorIterator_key
#define arginfo_class_RecursiveTreeIterator_getPrefix arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveTreeIterator_getPrefix arginfo_class_RegexIterator_getRegex
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveTreeIterator_setPostfix, 0, 0, 1)
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_RecursiveTreeIterator_setPostfix, 0, 1, IS_VOID, 0)
ZEND_ARG_TYPE_INFO(0, postfix, IS_STRING, 0)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveTreeIterator_setPrefixPart, 0, 0, 2)
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_RecursiveTreeIterator_setPrefixPart, 0, 2, IS_VOID, 0)
ZEND_ARG_TYPE_INFO(0, part, IS_LONG, 0)
ZEND_ARG_TYPE_INFO(0, value, IS_STRING, 0)
ZEND_END_ARG_INFO()
#define arginfo_class_RecursiveTreeIterator_getEntry arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveTreeIterator_getEntry arginfo_class_RegexIterator_getRegex
#define arginfo_class_RecursiveTreeIterator_getPostfix arginfo_class_EmptyIterator_current
#define arginfo_class_RecursiveTreeIterator_getPostfix arginfo_class_RegexIterator_getRegex
ZEND_METHOD(EmptyIterator, current);

View File

@ -35,7 +35,7 @@ class StudentIdFilter extends FilterIterator
$this->id = $other->getId();
}
public function accept()
public function accept(): bool
{
echo "ACCEPT ".$this->current()->getId()." == ".$this->id."\n";
return $this->current()->getId() == $this->id;

View File

@ -10,7 +10,7 @@ class MyRecursiveArrayIterator extends ArrayIterator implements RecursiveIterato
return is_array($this->current());
}
function getChildren()
function getChildren(): MyRecursiveArrayIterator
{
return new MyRecursiveArrayIterator($this->current());
}

View File

@ -13,25 +13,25 @@ class Collection implements Iterator
$this->array = $a;
}
public function current()
public function current(): mixed
{
echo __METHOD__ . "\n";
return current($this->array);
}
public function key()
public function key(): mixed
{
echo __METHOD__ . "\n";
return key($this->array);
}
public function next()
public function next(): void
{
echo __METHOD__ . "\n";
$this->valid = (false !== next($this->array));
}
public function valid()
public function valid(): bool
{
echo __METHOD__ . "\n";
return $this->valid;
@ -46,7 +46,7 @@ class Collection implements Iterator
class TestFilter extends FilterIterator
{
public function accept()
public function accept(): bool
{
echo __METHOD__ . "\n";
throw new Exception("Failure in Accept");

View File

@ -6,18 +6,18 @@ class BlaIterator implements Iterator
{
public function rewind(): void { }
public function next() { }
public function next(): void { }
public function valid() {
public function valid(): bool {
return true;
}
public function current()
public function current(): mixed
{
throw new Exception('boo');
}
public function key() { }
public function key(): mixed { return null; }
}
$it = new BlaIterator();

View File

@ -24,7 +24,7 @@ test( function() {
echo "FilterIterator... ";
class FilterIteratorTest extends FilterIterator {
function __construct(){}
function accept(){}
function accept(): bool {}
}
test( function() {
$o = new FilterIteratorTest;
@ -34,7 +34,7 @@ test( function() {
echo "RecursiveFilterIterator... ";
class RecursiveFilterIteratorTest extends RecursiveFilterIterator {
function __construct(){}
function accept(){}
function accept(): bool {}
}
test( function() {
$o = new RecursiveFilterIteratorTest;

View File

@ -9,7 +9,7 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator {
function rewind(): void {
echo "dummy\n";
}
function endChildren() {
function endChildren(): void {
global $count;
echo $this->getDepth();
if (--$count > 0) {

View File

@ -7,39 +7,39 @@ class foo implements \RecursiveIterator
{
public $foo = [];
public Function current ()
public Function current(): mixed
{
return current ($this->foo);
}
public Function key ()
public Function key(): mixed
{
return key ($this->foo);
}
public Function next ()
public Function next(): void
{
next ($this->foo);
}
public Function rewind ()
public Function rewind(): void
{
reset ($this->foo);
}
public Function valid ()
public Function valid(): bool
{
return current ($this->foo) !== false;
}
public Function getChildren ()
public Function getChildren(): ?RecursiveIterator
{
return current ($this->foo);
}
public Function hasChildren ()
public Function hasChildren(): bool
{
return (bool) count ($this->foo);
return (bool) count($this->foo);
}
}
@ -53,7 +53,7 @@ class fooIterator extends \RecursiveFilterIterator
/* CRASH */
}
public Function accept ()
public Function accept(): bool
{
return true;
}

View File

@ -19,22 +19,22 @@ class Container implements Iterator
$this->container->append($element);
}
public function current()
public function current(): mixed
{
return $this->iterator->current();
}
public function next()
public function next(): void
{
$this->iterator->next();
}
public function key()
public function key(): mixed
{
return $this->iterator->key();
}
public function valid()
public function valid(): bool
{
return $this->iterator->valid();
}

View File

@ -9,11 +9,11 @@ touch("$dir/file1");
touch("$dir/subdir/file2");
class Filter1 extends RecursiveFilterIterator {
public function accept() { return $this->getInnerIterator()->getSubPathname() != ''; }
public function accept(): bool { return $this->getInnerIterator()->getSubPathname() != ''; }
}
class Filter2 extends RecursiveFilterIterator {
public function accept() { return $this->getInnerIterator()->getSubPathname() != ' '; }
public function accept(): bool { return $this->getInnerIterator()->getSubPathname() != ' '; }
}
$iterator = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS );

View File

@ -20,26 +20,26 @@ class NumericArrayIterator implements Iterator
$this->i = 0;
}
public function valid()
public function valid(): bool
{
$ret = $this->i < count($this->a);
echo __METHOD__ . '(' . ($ret ? 'true' : 'false') . ")\n";
return $ret;
}
public function key()
public function key(): mixed
{
echo __METHOD__ . "\n";
return $this->i;
}
public function current()
public function current(): mixed
{
echo __METHOD__ . "\n";
return $this->a[$this->i];
}
public function next()
public function next(): void
{
echo __METHOD__ . "\n";
$this->i++;
@ -54,7 +54,7 @@ class NumericArrayIterator implements Iterator
class SeekableNumericArrayIterator extends NumericArrayIterator implements SeekableIterator
{
public function seek($index)
public function seek($index): void
{
if ($index < count($this->a)) {
$this->i = $index;

View File

@ -35,7 +35,7 @@ class StudentIdFilter extends FilterIterator
$this->id = $other->getId();
}
public function accept()
public function accept(): bool
{
echo "ACCEPT ".$this->current()->getId()." == ".$this->id."\n";
return $this->current()->getId() == $this->id;

View File

@ -20,26 +20,26 @@ class NumericArrayIterator implements Iterator
$this->i = 0;
}
public function valid()
public function valid(): bool
{
$ret = $this->i < count($this->a);
echo __METHOD__ . '(' . ($ret ? 'true' : 'false') . ")\n";
return $ret;
}
public function key()
public function key(): mixed
{
echo __METHOD__ . "\n";
return $this->i;
}
public function current()
public function current(): mixed
{
echo __METHOD__ . "\n";
return $this->a[$this->i];
}
public function next()
public function next(): void
{
echo __METHOD__ . "\n";
$this->i++;
@ -48,7 +48,7 @@ class NumericArrayIterator implements Iterator
class SeekableNumericArrayIterator extends NumericArrayIterator implements SeekableIterator
{
public function seek($index)
public function seek($index): void
{
if ($index < count($this->a)) {
$this->i = $index;

View File

@ -39,22 +39,22 @@ class NoRewindIteratorEx extends NoRewindIterator
echo __METHOD__ . "\n";
parent::rewind();
}
function valid()
function valid(): bool
{
echo __METHOD__ . "\n";
return parent::valid();
}
function current()
function current(): mixed
{
echo __METHOD__ . "\n";
return parent::current();
}
function key()
function key(): mixed
{
echo __METHOD__ . "\n";
return parent::key();
}
function next()
function next(): void
{
echo __METHOD__ . "\n";
parent::next();

View File

@ -5,27 +5,27 @@ SPL: EmptyIterator
class EmptyIteratorEx extends EmptyIterator
{
function rewind()
function rewind(): void
{
echo __METHOD__ . "\n";
parent::rewind();
}
function valid()
function valid(): bool
{
echo __METHOD__ . "\n";
return parent::valid();
}
function current()
function current(): never
{
echo __METHOD__ . "\n";
return parent::current();
parent::current();
}
function key()
function key(): never
{
echo __METHOD__ . "\n";
return parent::key();
parent::key();
}
function next()
function next(): void
{
echo __METHOD__ . "\n";
parent::next();

View File

@ -27,42 +27,42 @@ class MyRecursiveArrayIterator extends RecursiveArrayIterator
class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
{
function rewind()
function rewind(): void
{
echo __METHOD__ . "\n";
parent::rewind();
}
function valid()
function valid(): bool
{
echo __METHOD__ . "\n";
return parent::valid();
}
function current()
function current(): mixed
{
echo __METHOD__ . "\n";
return parent::current();
}
function key()
function key(): mixed
{
echo __METHOD__ . "\n";
return parent::key();
}
function next()
function next(): void
{
echo __METHOD__ . "\n";
parent::next();
}
function beginChildren()
function beginChildren(): void
{
echo __METHOD__ . "(".$this->getDepth().")\n";
}
function endChildren()
function endChildren(): void
{
echo __METHOD__ . "(".$this->getDepth().")\n";
}

View File

@ -5,21 +5,21 @@ SPL: RecursiveIteratorIterator and beginChildren/endChildren
class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
{
function rewind()
function rewind(): void
{
echo "<ul>\n";
parent::rewind();
}
function beginChildren()
function beginChildren(): void
{
echo str_repeat(' ',$this->getDepth())."<ul>\n";
}
function endChildren()
function endChildren(): void
{
echo str_repeat(' ',$this->getDepth())."</ul>\n";
}
function valid()
function valid(): bool
{
if (!parent::valid()) {
echo "<ul>\n";

View File

@ -18,21 +18,21 @@ class MenuOutput extends RecursiveIteratorIterator
{
parent::__construct($it);
}
function rewind()
function rewind(): void
{
echo "<ul>\n";
parent::rewind();
}
function beginChildren()
function beginChildren(): void
{
echo str_repeat(' ',$this->getDepth())."<ul>\n";
}
function endChildren()
function endChildren(): void
{
echo str_repeat(' ',$this->getDepth())."</ul>\n";
}
function valid()
function valid(): bool
{
if (!parent::valid()) {
echo "<ul>\n";

View File

@ -37,14 +37,14 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
parent::__construct($it);
}
function rewind()
function rewind(): void
{
echo __METHOD__ . "\n";
$this->skip = false;
parent::rewind();
}
function valid()
function valid(): bool
{
echo __METHOD__ . "\n";
if ($this->skip)
@ -55,25 +55,25 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
return parent::valid();
}
function current()
function current(): mixed
{
echo __METHOD__ . "\n";
return parent::current();
}
function key()
function key(): mixed
{
echo __METHOD__ . "\n";
return parent::key();
}
function next()
function next(): void
{
echo __METHOD__ . "\n";
parent::next();
}
function callHasChildren()
function callHasChildren(): bool
{
$this->skip = false;
$has = parent::callHasChildren();
@ -89,12 +89,12 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
return $res;
}
function beginChildren()
function beginChildren(): void
{
echo __METHOD__ . "(".$this->getDepth().")\n";
}
function endChildren()
function endChildren(): void
{
echo __METHOD__ . "(".$this->getDepth().")\n";
}

View File

@ -37,7 +37,7 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
parent::__construct($it);
}
function rewind()
function rewind(): void
{
echo __METHOD__ . "\n";
$this->skip = false;
@ -55,25 +55,25 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
return parent::valid();
}
function current()
function current(): mixed
{
echo __METHOD__ . "\n";
return parent::current();
}
function key()
function key(): int
{
echo __METHOD__ . "\n";
return parent::key();
}
function next()
function next(): void
{
echo __METHOD__ . "\n";
parent::next();
}
function callHasChildren()
function callHasChildren(): bool
{
$this->skip = false;
$has = parent::callHasChildren();
@ -89,7 +89,7 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
return $res;
}
function callGetChildren()
function callGetChildren(): ?MyRecursiveArrayIterator
{
if ($this->over == 2)
{
@ -100,12 +100,12 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
return new MyRecursiveArrayIterator($this->current());
}
function beginChildren()
function beginChildren(): void
{
echo __METHOD__ . "(".$this->getDepth().")\n";
}
function endChildren()
function endChildren(): void
{
echo __METHOD__ . "(".$this->getDepth().")\n";
}

View File

@ -37,14 +37,14 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
parent::__construct($it, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD);
}
function rewind()
function rewind(): void
{
echo __METHOD__ . "\n";
$this->skip = false;
parent::rewind();
}
function valid()
function valid(): bool
{
echo __METHOD__ . "\n";
if ($this->skip)
@ -55,25 +55,25 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
return parent::valid();
}
function current()
function current(): mixed
{
echo __METHOD__ . "\n";
return parent::current();
}
function key()
function key(): int
{
echo __METHOD__ . "\n";
return parent::key();
}
function next()
function next(): void
{
echo __METHOD__ . "\n";
parent::next();
}
function callHasChildren()
function callHasChildren(): bool
{
$this->skip = false;
$has = parent::callHasChildren();
@ -89,7 +89,7 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
return $res;
}
function callGetChildren()
function callGetChildren(): MyRecursiveArrayIterator
{
if ($this->over == 2)
{
@ -100,12 +100,12 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
return new MyRecursiveArrayIterator($this->current());
}
function beginChildren()
function beginChildren(): void
{
echo __METHOD__ . "(".$this->getDepth().")\n";
}
function endChildren()
function endChildren(): void
{
echo __METHOD__ . "(".$this->getDepth().")\n";
}

View File

@ -5,12 +5,12 @@ SPL: RecursiveIteratorIterator and begin/endIteration()
class MyRecursiveIteratorIterator extends RecursiveIteratorIterator
{
function beginIteration()
function beginIteration(): void
{
echo __METHOD__ . "()\n";
}
function endIteration()
function endIteration(): void
{
echo __METHOD__ . "()\n";
}

View File

@ -26,19 +26,19 @@ class MyAppendIterator extends AppendIterator
echo __METHOD__ . "\n";
}
function rewind()
function rewind(): void
{
echo __METHOD__ . "\n";
parent::rewind();
}
function valid()
function valid(): bool
{
echo __METHOD__ . "\n";
return parent::valid();
}
function append(Iterator $what)
function append(Iterator $what): void
{
echo __METHOD__ . "\n";
parent::append($what);

View File

@ -42,38 +42,38 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
parent::__construct($it);
}
function rewind()
function rewind(): void
{
echo __METHOD__ . "() - BEGIN\n";
parent::rewind();
echo __METHOD__ . "() - DONE\n";
}
function valid()
function valid(): bool
{
echo __METHOD__ . "()\n";
return parent::valid();
}
function current()
function current(): mixed
{
echo __METHOD__ . "()\n";
return parent::current();
}
function key()
function key(): int
{
echo __METHOD__ . "()\n";
return parent::key();
}
function next()
function next(): void
{
echo __METHOD__ . "()\n";
parent::next();
}
function callHasChildren()
function callHasChildren(): bool
{
$has = parent::callHasChildren();
$res = $this->getDepth() < $this->max_depth && $has;
@ -81,13 +81,13 @@ class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
return $res;
}
function beginChildren()
function beginChildren(): void
{
echo __METHOD__ . "(".$this->getDepth().")\n";
parent::beginChildren();
}
function endChildren()
function endChildren(): void
{
echo __METHOD__ . "(".$this->getDepth().")\n";
parent::endChildren();

View File

@ -14,31 +14,31 @@ class NumericArrayIterator implements Iterator
$this->a = $a;
}
public function valid()
public function valid(): bool
{
echo __METHOD__ . "\n";
return $this->i < count($this->a);
}
public function rewind()
public function rewind(): void
{
echo __METHOD__ . "\n";
$this->i = 0;
}
public function key()
public function key(): mixed
{
echo __METHOD__ . "\n";
return $this->i;
}
public function current()
public function current(): mixed
{
echo __METHOD__ . "\n";
return $this->a[$this->i];
}
public function next()
public function next(): void
{
echo __METHOD__ . "\n";
$this->i++;

View File

@ -5,7 +5,7 @@ SPL: RecursiveFilterIterator
class MyRecursiveFilterIterator extends RecursiveFilterIterator
{
function accept()
function accept(): bool
{
return true;
}

View File

@ -23,7 +23,7 @@ class MyRegexIterator extends RegexIterator
}
}
function accept()
function accept(): bool
{
@preg_match_all($this->re, (string)($this->uk ? $this->key() : $this->current()), $sub);
$ret = parent::accept();

View File

@ -23,7 +23,7 @@ class MyRegexIterator extends RegexIterator
}
}
function accept()
function accept(): bool
{
@preg_match_all($this->re, (string)($this->uk ? $this->key() : $this->current()), $sub);
$ret = parent::accept();

View File

@ -6,7 +6,7 @@ Sebastian Schürmann
<?php
class myFilterIterator extends FilterIterator {
function accept() { }
function accept(): bool { }
}
class myCachingIterator extends CachingIterator { }

View File

@ -6,11 +6,11 @@ Sebastian Schürmann
<?php
class myIterator implements Iterator {
function current() {}
function next() {}
function key() {}
function valid() {}
function rewind() {}
function current(): mixed {}
function next(): void {}
function key(): mixed {}
function valid(): bool {}
function rewind(): void {}
}
try {

View File

@ -7,11 +7,11 @@ class Test implements Iterator {
function foo() {
echo __METHOD__ . "()\n";
}
function rewind() {}
function valid() {}
function current() {}
function key() {}
function next() {}
function rewind(): void {}
function valid(): bool {}
function current(): mixed {}
function key(): mixed {}
function next(): void {}
}
class TestIteratorIterator extends IteratorIterator {

View File

@ -10,7 +10,7 @@ $recArrIt = new RecursiveArrayIterator($arrOb->getIterator());
class MyRecursiveIteratorIterator extends RecursiveIteratorIterator {
function nextelement() {
function nextelement(): void {
echo __METHOD__."\n";
}
}

View File

@ -10,7 +10,7 @@ $recArrIt = new RecursiveArrayIterator($arrOb->getIterator());
class MyRecursiveIteratorIterator extends RecursiveIteratorIterator {
function beginchildren() {
function beginchildren(): void {
throw new Exception;
}
}

View File

@ -10,7 +10,7 @@ $recArrIt = new RecursiveArrayIterator($arrOb->getIterator());
class MyRecursiveIteratorIterator extends RecursiveIteratorIterator {
function callHasChildren() {
function callHasChildren(): bool {
throw new Exception;
}
}

View File

@ -10,7 +10,7 @@ $recArrIt = new RecursiveArrayIterator($arrOb->getIterator());
class MyRecursiveIteratorIterator extends RecursiveIteratorIterator {
function endchildren() {
function endchildren(): void {
throw new Exception;
}
}

View File

@ -10,7 +10,7 @@ $recArrIt = new RecursiveArrayIterator($arrOb->getIterator());
class MyRecursiveIteratorIterator extends RecursiveIteratorIterator {
function nextelement() {
function nextelement(): void {
throw new Exception;
}
}

View File

@ -34,7 +34,7 @@ class RecursiveCompareDualIterator extends RecursiveIteratorIterator
/** Rewind iteration and comparison process. Starting with $equal = true.
*/
function rewind()
function rewind(): void
{
$this->equal = true;
parent::rewind();
@ -43,7 +43,7 @@ class RecursiveCompareDualIterator extends RecursiveIteratorIterator
/** Calculate $equal
* @see $equal
*/
function endChildren()
function endChildren(): void
{
$this->equal &= !$this->getInnerIterator()->getLHS()->valid()
&& !$this->getInnerIterator()->getRHS()->valid();

View File

@ -14,7 +14,7 @@ foreach ($iterator as $element) {
}
class SkipsFirstElementRecursiveIteratorIterator extends RecursiveIteratorIterator {
public function beginIteration() {
public function beginIteration(): void {
echo "::beginIteration() was invoked\n";
$this->next();
}

View File

@ -14,7 +14,7 @@ foreach ($iterator as $element) {
}
class EndIterationRecursiveIteratorIterator extends RecursiveIteratorIterator {
public function endIteration() {
public function endIteration(): void {
echo "::endIteration() was invoked\n";
}
}

View File

@ -14,7 +14,7 @@ foreach ($iterator as $element) {
}
class NextElementRecursiveIteratorIterator extends RecursiveIteratorIterator {
public function nextElement() {
public function nextElement(): void {
echo "::nextElement() was invoked\n";
}
}