rfc:functional-elements

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
rfc:functional-elements [2008/03/06 02:00] – Initial creation. Introduction, current use cases lstrojnyrfc:functional-elements [2008/03/06 02:12] – Adding usage examples lstrojny
Line 3: Line 3:
 A common pattern in PHP is iterating through a list of objects and executing certain methods of the function. This is especially common when it comes to 1:n-relations (e.g. one object, n adapters). This proposal is meant to abstract those iterations in convenient functional constructs. A common pattern in PHP is iterating through a list of objects and executing certain methods of the function. This is especially common when it comes to 1:n-relations (e.g. one object, n adapters). This proposal is meant to abstract those iterations in convenient functional constructs.
  
-==== Current examples ====+==== Current usage patterns ====
 === UC-1 === === UC-1 ===
 <code php> <code php>
 foreach ($list as $element) { foreach ($list as $element) {
-    $element->method();+    $element->method();    array $params = array(), 
 +    array $condition_params = array(), 
 +    bool $collect = true, 
 +    bool $finite = true
 } }
 </code> </code>
Line 36: Line 39:
     }     }
 } }
 +</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>
 +
 +Iteratoring over a list of objects, call methods "testMethod" (with param "test") and "otherTestMethod" (with param "other") and get the list of results:
 +<code php>
 +$result = spl_iterator_element_call($list, array('testMethod', 'otherTestMethod'), array('test', 'other'));
 +</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> </code>
rfc/functional-elements.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1