[DCOM-17] Add Collection::slice($offset, $length) Created: 08/Aug/10  Updated: 14/Jan/11  Resolved: 24/Aug/10

Status: Resolved
Project: Doctrine Common
Component/s: Collections
Affects Version/s: 2.0.0-BETA4
Fix Version/s: 2.0.0-RC1

Type: Improvement Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Description   

Since we are still at a point were bc breaks are potentially not so harming:

We need a slice() method on the Collection for forward compatibility, the support for large and very large collections using FETCH_EXTRA would heavily benefit from a method like this.

/**
 * Extract a slice of $length elements starting at position $offset from the Collection.
 * 
 * If $length is null it returns all elements from $offset to the end of the Collection.
 * Keys have to be preserved by this method.
 * 
 * @param int $offset
 * @param int $length
 * @return array
 */
public function slice($offset, $length = null);

The ArrayCollection implement would be:

public function slice($offset, $length = null);
{
    return array_slice($this->_elements, $offset, $length, true); // preserve keys
}


 Comments   
Comment by Benjamin Eberlei [ 08/Aug/10 ]

Updated preserve paragraph

Comment by Benjamin Eberlei [ 24/Aug/10 ]

Implemented

Comment by Jan Pieper [ 14/Jan/11 ]

Is there any reason why slice() returns an array although methods like filter() and map() return an instance of Doctrine\Common\Collections\ArrayCollection?

Generated at Thu Nov 27 17:24:28 UTC 2014 using JIRA 6.2.3#6260-sha1:63ef1d6dac3f4f4d7db4c1effd405ba38ccdc558.