rfc:functional-elements

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
rfc:functional-elements [2008/03/16 14:10]
lstrojny Typo
rfc:functional-elements [2017/09/22 13:28] (current)
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.1205676655.txt.gz · Last modified: 2017/09/22 13:28 (external edit)