From f40fd6731cc26c15b0c3fbaf5e97eb7667491308 Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Tue, 28 Nov 2006 22:19:22 +0000 Subject: [PATCH] - Add new example --- ext/spl/examples/callbackfilteriterator.inc | 122 ++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100755 ext/spl/examples/callbackfilteriterator.inc diff --git a/ext/spl/examples/callbackfilteriterator.inc b/ext/spl/examples/callbackfilteriterator.inc new file mode 100755 index 0000000000..96a8abfc04 --- /dev/null +++ b/ext/spl/examples/callbackfilteriterator.inc @@ -0,0 +1,122 @@ +callback = $callback; + $this->mode = $mode; + $this->flags = $flags; + } + + /** Call the filter callback + * @return result of filter callback + */ + public function accept() + { + $this->key = parent::key(); + $this->current = parent::current(); + + switch($this->mode) { + default: + case self::USE_FALSE; + return false; + case self::USE_TRUE: + return true; + case self::USE_VALUE: + if($this->flags & self::REPLACE) { + return (bool) call_user_func($this->callback, &$this->current); + } else { + return (bool) call_user_func($this->callback, $this->current); + } + case self::USE_KEY: + if($this->flags & self::REPLACE) { + return (bool) call_user_func($this->callback, &$this->key); + } else { + return (bool) call_user_func($this->callback, $this->key); + } + case SELF::USE_BOTH: + if($this->flags & self::REPLACE) { + return (bool) call_user_func($this->callback, &$this->key, &$this->current); + } else { + return (bool) call_user_func($this->callback, $this->key, $this->current); + } + } + } + + /** @return @copy $key */ + function key() + { + return $this->key; + } + + /** @return @copy $current */ + function current() + { + return $this->current; + } + + /** @return @copy $mode */ + function getMode() + { + return $this->mode; + } + + /** @param $mode set new mode, @see $mode */ + function setMode($mode) + { + $this->mode = $mode; + } + + /** @return @copy $flags */ + function getFlags() + { + return $this->flags; + } + + /** @param $flags set new flags, @see @copy $flags */ + function setFlags($flags) + { + $this->flags = $flags; + } +} + +?> \ No newline at end of file -- 2.40.0