rfc:functional-elements
Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
rfc:functional-elements [2008/03/16 14:10] lstrojny Typo |
rfc:functional-elements [2008/03/17 09:38] lstrojny Adding new-way UC-2 |
||
---|---|---|---|
Line 39: | Line 39: | ||
</code> | </code> | ||
- | ==== Extracted functions ==== | ||
- | === spl_iterator_element_call() === | ||
- | <code php> | ||
- | array|bool spl_iterator_element_call( | ||
- | array|Iterator $iterator, | ||
- | string|array $methods, | ||
- | array $params = array(), | ||
- | bool $collect = true | ||
- | ) | ||
- | </code> | ||
- | Iterating over a list of objects, call method "testMethod" and get the list of results: | ||
- | <code php> | ||
- | $result = spl_iterator_element_call($list, 'testMethod'); | ||
- | </code> | ||
- | Iterating over a list of objects, call methods "testMethod" (with param "test") and "otherTestMethod" (with param "other") and get the list of results: | + | ==== Required functionality ==== |
+ | Extracting the required functionality to leads to the following required additions: | ||
+ | * [[rfc:functional-elements:call-iterator|class CallIterator]]: a simple iterator which walks over a traversable list (including arrays) and calls a specified method. The CallIterator might optionally gather the results | ||
+ | * [[rfc::functional-elements:is-traversable|function is_traversable()]]: Returns true if a list is traversable (Iterator/IteratorAggregate/array) | ||
+ | * [[rfc:functional-elements:iterate|function iterate()]]: Walks over a traversable list and does nothing | ||
+ | * function iterator_true(): Walks over a traversable list and assumes every element to be bool(true) | ||
+ | * function iterator_false(): Walks over a traversable list and assumes every element to be bool(false) | ||
+ | |||
+ | ==== Modified use cases ==== | ||
+ | === UC-1: Iterating over an aggregation of objects === | ||
<code php> | <code php> | ||
- | $result = spl_iterator_element_call($list, array('testMethod', 'otherTestMethod'), array('test', 'other')); | + | iterate(new CallIterator($list, 'method')); |
</code> | </code> | ||
- | Iterating over a list of objects, call method 'testMethod' (with param "test1" and "test2") and "otherTestMethod" (with param "other1" and "other2") and get the list of results: | + | === UC-2: Iterating over an aggregation of objects and keeping the results === |
<code php> | <code php> | ||
- | $result = spl_iterator_element_call($list, array('testMethod', 'otherTestMethod'), array(array('test1', 'test2'), array('other1', 'other2'))); | + | $result = new CallIterator($list, 'method')); |
</code> | </code> | ||
- | === spl_iterator_element_call_conditional() === | ||
- | <code php> | ||
- | array|mixed spl_iterator_element_call_conditional( | ||
- | array|Iterator $iterator, | ||
- | string|array $methods, | ||
- | string|array $conditions, | ||
- | array $params = array(), | ||
- | array $condition_params = array(), | ||
- | bool $collect = true, | ||
- | bool $finite = true | ||
- | ) | ||
- | </code> |
rfc/functional-elements.txt · Last modified: 2017/09/22 13:28 (external edit)