| Package | system.collections | 
|---|---|
| Inheritance | class CList » CComponent | 
| Implements | IteratorAggregate, Traversable, ArrayAccess, Countable | 
| Subclasses | CFilterChain, CTypedList | 
| Since | 1.0 | 
| Version | $Id$ | 
| Source Code | framework/collections/CList.php | 
$list[]=$item; // append at the end $list[$index]=$item; // $index must be between 0 and $list->Count unset($list[$index]); // remove the item at $index if(isset($list[$index])) // if the list has an item at $index foreach($list as $index=>$item) // traverse each item in the list $n=count($list); // returns the number of items in the list
| Property | Type | Description | Defined By | 
|---|---|---|---|
| count | integer | the number of items in the list | CList | 
| iterator | Iterator | Returns an iterator for traversing the items in the list. | CList | 
| readOnly | boolean | whether this list is read-only or not. | CList | 
| Method | Description | Defined By | 
|---|---|---|
| __call() | Calls the named method which is not a class method. | CComponent | 
| __construct() | Constructor. | CList | 
| __get() | Returns a property value, an event handler list or a behavior based on its name. | CComponent | 
| __isset() | Checks if a property value is null. | CComponent | 
| __set() | Sets value of a component property. | CComponent | 
| __unset() | Sets a component property to be null. | CComponent | 
| add() | Appends an item at the end of the list. | CList | 
| asa() | Returns the named behavior object. | CComponent | 
| attachBehavior() | Attaches a behavior to this component. | CComponent | 
| attachBehaviors() | Attaches a list of behaviors to the component. | CComponent | 
| attachEventHandler() | Attaches an event handler to an event. | CComponent | 
| canGetProperty() | Determines whether a property can be read. | CComponent | 
| canSetProperty() | Determines whether a property can be set. | CComponent | 
| clear() | Removes all items in the list. | CList | 
| contains() | CList | |
| copyFrom() | Copies iterable data into the list. | CList | 
| count() | Returns the number of items in the list. | CList | 
| detachBehavior() | Detaches a behavior from the component. | CComponent | 
| detachBehaviors() | Detaches all behaviors from the component. | CComponent | 
| detachEventHandler() | Detaches an existing event handler. | CComponent | 
| disableBehavior() | Disables an attached behavior. | CComponent | 
| disableBehaviors() | Disables all behaviors attached to this component. | CComponent | 
| enableBehavior() | Enables an attached behavior. | CComponent | 
| enableBehaviors() | Enables all behaviors attached to this component. | CComponent | 
| getCount() | Returns the number of items in the list | CList | 
| getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent | 
| getIterator() | Returns an iterator for traversing the items in the list. | CList | 
| getReadOnly() | Returns whether this list is read-only or not. Defaults to false. | CList | 
| hasEvent() | Determines whether an event is defined. | CComponent | 
| hasEventHandler() | Checks whether the named event has attached handlers. | CComponent | 
| hasProperty() | Determines whether a property is defined. | CComponent | 
| indexOf() | CList | |
| insertAt() | Inserts an item at the specified position. | CList | 
| itemAt() | Returns the item at the specified offset. | CList | 
| mergeWith() | Merges iterable data into the map. | CList | 
| offsetExists() | Returns whether there is an item at the specified offset. | CList | 
| offsetGet() | Returns the item at the specified offset. | CList | 
| offsetSet() | Sets the item at the specified offset. | CList | 
| offsetUnset() | Unsets the item at the specified offset. | CList | 
| raiseEvent() | Raises an event. | CComponent | 
| remove() | Removes an item from the list. | CList | 
| removeAt() | Removes an item at the specified position. | CList | 
| toArray() | CList | 
| Method | Description | Defined By | 
|---|---|---|
| setReadOnly() | Sets whether this list is read-only or not | CList | 
the number of items in the list
Returns an iterator for traversing the items in the list. This method is required by the interface IteratorAggregate.
whether this list is read-only or not. Defaults to false.
| 
public void __construct(array $data=NULL, boolean $readOnly=false) | ||
| $data | array | the initial data. Default is null, meaning no initialization. | 
| $readOnly | boolean | whether the list is read-only | 
public function __construct($data=null,$readOnly=false)
{
    if($data!==null)
        $this->copyFrom($data);
    $this->setReadOnly($readOnly);
}
Constructor. Initializes the list with an array or an iterable object.
| 
public integer add(mixed $item) | ||
| $item | mixed | new item | 
| {return} | integer | the zero-based index at which the item is added | 
public function add($item)
{
    $this->insertAt($this->_c,$item);
    return $this->_c-1;
}
Appends an item at the end of the list.
| 
public void clear() | 
public function clear()
{
    for($i=$this->_c-1;$i>=0;--$i)
        $this->removeAt($i);
}
Removes all items in the list.
| 
public boolean contains(mixed $item) | ||
| $item | mixed | the item | 
| {return} | boolean | whether the list contains the item | 
public function contains($item)
{
    return $this->indexOf($item)>=0;
}
| 
public void copyFrom(mixed $data) | ||
| $data | mixed | the data to be copied from, must be an array or object implementing Traversable | 
public function copyFrom($data)
{
    if(is_array($data) || ($data instanceof Traversable))
    {
        if($this->_c>0)
            $this->clear();
        if($data instanceof CList)
            $data=$data->_d;
        foreach($data as $item)
            $this->add($item);
    }
    else if($data!==null)
        throw new CException(Yii::t('yii','List data must be an array or an object implementing Traversable.'));
}
Copies iterable data into the list. Note, existing data in the list will be cleared first.
| 
public integer count() | ||
| {return} | integer | number of items in the list. | 
public function count()
{
    return $this->getCount();
}
Returns the number of items in the list. This method is required by Countable interface.
| 
public integer getCount() | ||
| {return} | integer | the number of items in the list | 
public function getCount()
{
    return $this->_c;
}
| 
public Iterator getIterator() | ||
| {return} | Iterator | an iterator for traversing the items in the list. | 
public function getIterator()
{
    return new CListIterator($this->_d);
}
Returns an iterator for traversing the items in the list. This method is required by the interface IteratorAggregate.
| 
public boolean getReadOnly() | ||
| {return} | boolean | whether this list is read-only or not. Defaults to false. | 
public function getReadOnly()
{
    return $this->_r;
}
| 
public integer indexOf(mixed $item) | ||
| $item | mixed | the item | 
| {return} | integer | the index of the item in the list (0 based), -1 if not found. | 
public function indexOf($item)
{
    if(($index=array_search($item,$this->_d,true))!==false)
        return $index;
    else
        return -1;
}
| 
public void insertAt(integer $index, mixed $item) | ||
| $index | integer | the specified position. | 
| $item | mixed | new item | 
public function insertAt($index,$item)
{
    if(!$this->_r)
    {
        if($index===$this->_c)
            $this->_d[$this->_c++]=$item;
        else if($index>=0 && $index<$this->_c)
        {
            array_splice($this->_d,$index,0,array($item));
            $this->_c++;
        }
        else
            throw new CException(Yii::t('yii','List index "{index}" is out of bound.',
                array('{index}'=>$index)));
    }
    else
        throw new CException(Yii::t('yii','The list is read only.'));
}
Inserts an item at the specified position. Original item at the position and the next items will be moved one step towards the end.
| 
public mixed itemAt(integer $index) | ||
| $index | integer | the index of the item | 
| {return} | mixed | the item at the index | 
public function itemAt($index)
{
    if(isset($this->_d[$index]))
        return $this->_d[$index];
    else if($index>=0 && $index<$this->_c) // in case the value is null
        return $this->_d[$index];
    else
        throw new CException(Yii::t('yii','List index "{index}" is out of bound.',
            array('{index}'=>$index)));
}
Returns the item at the specified offset. This method is exactly the same as offsetGet.
| 
public void mergeWith(mixed $data) | ||
| $data | mixed | the data to be merged with, must be an array or object implementing Traversable | 
public function mergeWith($data)
{
    if(is_array($data) || ($data instanceof Traversable))
    {
        if($data instanceof CList)
            $data=$data->_d;
        foreach($data as $item)
            $this->add($item);
    }
    else if($data!==null)
        throw new CException(Yii::t('yii','List data must be an array or an object implementing Traversable.'));
}
Merges iterable data into the map. New data will be appended to the end of the existing data.
| 
public boolean offsetExists(integer $offset) | ||
| $offset | integer | the offset to check on | 
| {return} | boolean | |
public function offsetExists($offset)
{
    return ($offset>=0 && $offset<$this->_c);
}
Returns whether there is an item at the specified offset. This method is required by the interface ArrayAccess.
| 
public mixed offsetGet(integer $offset) | ||
| $offset | integer | the offset to retrieve item. | 
| {return} | mixed | the item at the offset | 
public function offsetGet($offset)
{
    return $this->itemAt($offset);
}
Returns the item at the specified offset. This method is required by the interface ArrayAccess.
| 
public void offsetSet(integer $offset, mixed $item) | ||
| $offset | integer | the offset to set item | 
| $item | mixed | the item value | 
public function offsetSet($offset,$item)
{
    if($offset===null || $offset===$this->_c)
        $this->insertAt($this->_c,$item);
    else
    {
        $this->removeAt($offset);
        $this->insertAt($offset,$item);
    }
}
Sets the item at the specified offset. This method is required by the interface ArrayAccess.
| 
public void offsetUnset(integer $offset) | ||
| $offset | integer | the offset to unset item | 
public function offsetUnset($offset)
{
    $this->removeAt($offset);
}
Unsets the item at the specified offset. This method is required by the interface ArrayAccess.
| 
public integer remove(mixed $item) | ||
| $item | mixed | the item to be removed. | 
| {return} | integer | the index at which the item is being removed | 
public function remove($item)
{
    if(($index=$this->indexOf($item))>=0)
    {
        $this->removeAt($index);
        return $index;
    }
    else
        return false;
}
Removes an item from the list. The list will first search for the item. The first item found will be removed from the list.
| 
public mixed removeAt(integer $index) | ||
| $index | integer | the index of the item to be removed. | 
| {return} | mixed | the removed item. | 
public function removeAt($index)
{
    if(!$this->_r)
    {
        if($index>=0 && $index<$this->_c)
        {
            $this->_c--;
            if($index===$this->_c)
                return array_pop($this->_d);
            else
            {
                $item=$this->_d[$index];
                array_splice($this->_d,$index,1);
                return $item;
            }
        }
        else
            throw new CException(Yii::t('yii','List index "{index}" is out of bound.',
                array('{index}'=>$index)));
    }
    else
        throw new CException(Yii::t('yii','The list is read only.'));
}
Removes an item at the specified position.
| 
protected void setReadOnly(boolean $value) | ||
| $value | boolean | whether this list is read-only or not | 
protected function setReadOnly($value)
{
    $this->_r=$value;
}
| 
public array toArray() | ||
| {return} | array | the list of items in array | 
public function toArray()
{
    return $this->_d;
}
Signup or Login in order to comment.