包 | system.collections |
---|---|
继承 | class CAttributeCollection » CMap » CComponent |
实现 | Countable, ArrayAccess, Traversable, IteratorAggregate |
源自 | 1.0 |
版本 | $Id: CAttributeCollection.php 3515 2011-12-28 12:29:24Z mdomba $ |
源码 |
CAttributeCollection实现了为储存的属性名称和值的集合。
除CMap提供的所有功能外,CAttributeCollection 允许你像getting和setting属性一样获取和设置 属性值。例如,下面的用法对于一个CAttributeCollection对象来说, 都是有效的:
属性名称的大小写敏感可以通过集合的 caseSensitive属性开启或关闭。
除CMap提供的所有功能外,CAttributeCollection 允许你像getting和setting属性一样获取和设置 属性值。例如,下面的用法对于一个CAttributeCollection对象来说, 都是有效的:
$collection->text='text'; // 等价于:$collection->add('text','text'); echo $collection->text; // 等价于:echo $collection->itemAt('text');
属性名称的大小写敏感可以通过集合的 caseSensitive属性开启或关闭。
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
caseSensitive | boolean | 键名是否大小写敏感。默认为false。 | CAttributeCollection |
count | integer | 返回map中的项目数。 | CMap |
iterator | CMapIterator | 返回遍历这个列表的项目的迭代器。 | CMap |
keys | array | 返回键名列表 | CMap |
readOnly | boolean | 返回值说明这个列表是否为只读。默认为false。 | CMap |
公共方法
方法 | 描述 | 定义在 |
---|---|---|
__call() | 如果类中没有调的方法名,则调用这个方法。 | CComponent |
__construct() | 构造方法。 | CMap |
__get() | 通过属性或事件名返回一个属性值或一个事件处理程序列表。 | CAttributeCollection |
__isset() | 检测一个属性值是否为null。 | CAttributeCollection |
__set() | 设置一个组件属性的值。 | CAttributeCollection |
__unset() | 设置一个组件属性为null。 | CAttributeCollection |
add() | 添加一个项到map。 | CAttributeCollection |
asa() | 返回这个名字的行为对象。 | CComponent |
attachBehavior() | 附加一个行为到组件。 | CComponent |
attachBehaviors() | 附加一个行为列表到组件。 | CComponent |
attachEventHandler() | 为事件附加一个事件处理程序。 | CComponent |
canGetProperty() | 确定一个属性是否可读。 | CAttributeCollection |
canSetProperty() | 确定一个属性是否可设置。 | CAttributeCollection |
clear() | 删除map中所有项目。 | CMap |
contains() | 返回值说明指定的项目是否在map中。 | CAttributeCollection |
copyFrom() | 将迭代器中的数据复制到map。 | CMap |
count() | 返回map中的项目数。 | CMap |
detachBehavior() | 从组件中分离一个行为。 | CComponent |
detachBehaviors() | 从组件中分离所有行为。 | CComponent |
detachEventHandler() | 分离一个存在的事件处理程序。 | CComponent |
disableBehavior() | 禁用一个附加行为。 | CComponent |
disableBehaviors() | 禁用组件附加的所有行为。 | CComponent |
enableBehavior() | 启用一个附加行为。 | CComponent |
enableBehaviors() | 启用组件附加的所有行为。 | CComponent |
evaluateExpression() | 计算一个PHP表达式,或根据组件上下文执行回调。 | CComponent |
getCount() | 返回map中的项目数。 | CMap |
getEventHandlers() | 返回一个事件的附加处理程序列表。 | CComponent |
getIterator() | 返回遍历这个列表的项目的迭代器。 | CMap |
getKeys() | 返回返回键名列表 | CMap |
getReadOnly() | 返回返回值说明这个列表是否为只读。默认为false。 | CMap |
hasEvent() | 确定一个事件是否定义。 | CComponent |
hasEventHandler() | 检查事件是否有附加的处理程序。 | CComponent |
hasProperty() | 确定是否一个属性已定义。 | CAttributeCollection |
itemAt() | 返回指定键的项。 | CAttributeCollection |
mergeArray() | 递归合并两个或多个数组。 | CMap |
mergeWith() | 将迭代器的数据整合到map。 | CMap |
offsetExists() | 返回值说明指定位置是否存在元素。 | CMap |
offsetGet() | 返回值指定位置的元素。 | CMap |
offsetSet() | 设置指定位置的元素。 | CMap |
offsetUnset() | 删除指定位置的元素。 | CMap |
raiseEvent() | 发起一个事件。 | CComponent |
remove() | 通过它的键从map中移除一个项目。 | CAttributeCollection |
toArray() | CMap |
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
setReadOnly() | 设置设置这个列表是否为只读 | CMap |
属性详细
caseSensitive
属性
public boolean $caseSensitive;
键名是否大小写敏感。默认为false。
方法详细
__get()
方法
public mixed __get(string $name)
| ||
$name | string | 属性名或事件名 |
{return} | mixed | 属性值或事件处理程序列表 |
public function __get($name)
{
if($this->contains($name))
return $this->itemAt($name);
else
return parent::__get($name);
}
通过属性或事件名返回一个属性值或一个事件处理程序列表。 这个方法通过返回一个键值是否存在于集合来 覆盖父类方法。
__isset()
方法
public boolean __isset(string $name)
| ||
$name | string | 属性名或事件名 |
{return} | boolean | 返回值说明属性值是否为null |
public function __isset($name)
{
if($this->contains($name))
return $this->itemAt($name)!==null;
else
return parent::__isset($name);
}
检测一个属性值是否为null。 这个方法通过检查键名是否存在于集合当中,并且为非null值,达到 覆盖父类方法实现。
__set()
方法
public void __set(string $name, mixed $value)
| ||
$name | string | 属性名或事件名 |
$value | mixed | 属性值或事件处理程序 |
public function __set($name,$value)
{
$this->add($name,$value);
}
设置一个组件属性的值。 这个方法通过添加一个新的键名和键值到集合,达到 覆盖父类方法实现。
__unset()
方法
public void __unset(string $name)
| ||
$name | string | 属性名或事件名 |
public function __unset($name)
{
$this->remove($name);
}
设置一个组件属性为null。 这个方法通过清除指定的键名键值,达到 覆盖父类方法实现。
add()
方法
public void add(mixed $key, mixed $value)
| ||
$key | mixed | key |
$value | mixed | value |
public function add($key,$value)
{
if($this->caseSensitive)
parent::add($key,$value);
else
parent::add(strtolower($key),$value);
}
添加一个项到map。 这个方法是,如果caseSensitive为false,则先将键名转换成小写,达到覆盖父类方法实现。
canGetProperty()
方法
public boolean canGetProperty(string $name)
| ||
$name | string | 属性名 |
{return} | boolean | 返回值说明该属性是否可读 |
public function canGetProperty($name)
{
return $this->contains($name) || parent::canGetProperty($name);
}
确定一个属性是否可读。 这个方法是,如果集合中包含此键名对应的键值,则返回true,达到 覆盖父类方法实现。
canSetProperty()
方法
public boolean canSetProperty(string $name)
| ||
$name | string | the property name |
{return} | boolean | true |
public function canSetProperty($name)
{
return true;
}
确定一个属性是否可设置。 这个方法通过返回真覆盖父类方法实现。 因为你总是增加一个新值到集合。
contains()
方法
public boolean contains(mixed $key)
| ||
$key | mixed | 键名 |
{return} | boolean | 返回值说明map是否包含着指定键名对应的项目。 |
public function contains($key)
{
if($this->caseSensitive)
return parent::contains($key);
else
return parent::contains(strtolower($key));
}
返回值说明指定的项目是否在map中。 这个方法是,如果caseSensitive为false,则先将键名转换成小写,达到覆盖父类方法实现。
hasProperty()
方法
public boolean hasProperty(string $name)
| ||
$name | string | 属性名 |
{return} | boolean | 返回值说明该属性是否被定义 |
public function hasProperty($name)
{
return $this->contains($name) || parent::hasProperty($name);
}
确定是否一个属性已定义。 这个方法是,如果集合中包含此键名对应的键值,则返回true,达到 覆盖父类方法实现。
itemAt()
方法
public mixed itemAt(mixed $key)
| ||
$key | mixed | 键名 |
{return} | mixed | 返回在偏移量位置的元素,如果在此偏移位置此元素没找到则返回null。 |
public function itemAt($key)
{
if($this->caseSensitive)
return parent::itemAt($key);
else
return parent::itemAt(strtolower($key));
}
返回指定键的项。 这个方法是,如果caseSensitive为false,则先将键名转换成小写,达到覆盖父类方法实现。
remove()
方法
public mixed remove(mixed $key)
| ||
$key | mixed | 被移除的项目的键名。 |
{return} | mixed | 返回移除的键值,如果键名不存在则返回null。 |
public function remove($key)
{
if($this->caseSensitive)
return parent::remove($key);
else
return parent::remove(strtolower($key));
}
通过它的键从map中移除一个项目。 这个方法是,如果caseSensitive为false,则先将键名转换成小写,达到覆盖父类方法实现。