rfc:functional-elements

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rfc:functional-elements [2008/03/16 14:09] – Adding use case titles lstrojnyrfc:functional-elements [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 20: Line 20:
 </code> </code>
  
-=== UC-3: Iterating over an aggregtion of objects and conditionally executing a method ===+=== UC-3: Iterating over an aggregation of objects and conditionally executing a method ===
 <code php> <code php>
 foreach ($list as $element) { foreach ($list as $element) {
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 = iterate(new CallIterator($list, 'method'), true);
 </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.1205676582.txt.gz · Last modified: 2017/09/22 13:28 (external edit)