CDataProvider


system.web
继承 abstract class CDataProvider » CComponent
实现 IDataProvider
子类 CActiveDataProvider, CArrayDataProvider, CSqlDataProvider
源自 1.1
版本 $Id: CDataProvider.php 3426 2011-10-25 00:01:09Z alexander.makarow $
源码
CDataProvider是实现IDataProvider接口的基类。

继承的类主要实现三个方法:fetchDatafetchKeyscalculateTotalItemCount

公共属性

属性 类型 描述 定义在
data array 返回当前可用的数据项。 CDataProvider
id string 返回所有数据提供者的唯一标识ID。 CDataProvider
itemCount integer 返回当前页面的数据项数目。 CDataProvider
keys array 返回相关数据项的键。 CDataProvider
pagination CPagination 返回pagination对象。 CDataProvider
sort CSort 返回sort对象。 CDataProvider
totalItemCount integer 返回所有数据项的总数。 CDataProvider

公共方法

方法 描述 定义在
__call() 如果类中没有调的方法名,则调用这个方法。 CComponent
__get() 返回一个属性值、一个事件处理程序列表或一个行为名称。 CComponent
__isset() 检查一个属性是否为null。 CComponent
__set() 设置一个组件的属性值。 CComponent
__unset() 设置一个组件的属性为null。 CComponent
asa() 返回这个名字的行为对象。 CComponent
attachBehavior() 附加一个行为到组件。 CComponent
attachBehaviors() 附加一个行为列表到组件。 CComponent
attachEventHandler() 为事件附加一个事件处理程序。 CComponent
canGetProperty() 确定属性是否可读。 CComponent
canSetProperty() 确定属性是否可写。 CComponent
detachBehavior() 从组件中分离一个行为。 CComponent
detachBehaviors() 从组件中分离所有行为。 CComponent
detachEventHandler() 分离一个存在的事件处理程序。 CComponent
disableBehavior() 禁用一个附加行为。 CComponent
disableBehaviors() 禁用组件附加的所有行为。 CComponent
enableBehavior() 启用一个附加行为。 CComponent
enableBehaviors() 启用组件附加的所有行为。 CComponent
evaluateExpression() 计算一个PHP表达式,或根据组件上下文执行回调。 CComponent
getData() 返回当前可用的数据项。 CDataProvider
getEventHandlers() 返回一个事件的附加处理程序列表。 CComponent
getId() 返回所有数据提供者的唯一标识ID。 CDataProvider
getItemCount() 返回当前页面的数据项数目。 CDataProvider
getKeys() 返回相关数据项的键。 CDataProvider
getPagination() 返回pagination对象。 CDataProvider
getSort() 返回sort对象。 CDataProvider
getTotalItemCount() 返回所有数据项的总数。 CDataProvider
hasEvent() 确定一个事件是否定义。 CComponent
hasEventHandler() 检查事件是否有附加的处理程序。 CComponent
hasProperty() 确定属性是否被定义。 CComponent
raiseEvent() 发起一个事件。 CComponent
setData() 为provider设置数据项。 CDataProvider
setId() 设置provider的ID。 CDataProvider
setKeys() 为provider设置数据项的键。 CDataProvider
setPagination() 设置provider的pagination对象。 CDataProvider
setSort() 为数据提供者设置排序。 CDataProvider
setTotalItemCount() 设置所有数据项的总数。 CDataProvider

受保护方法

方法 描述 定义在
calculateTotalItemCount() 设置数据项的总数。 CDataProvider
fetchData() 提取的持久性数据存储的数据。 CDataProvider
fetchKeys() 提取的持久性数据存储的数据键。 CDataProvider

属性详细

data 属性
public array getData(boolean $refresh=false)
public void setData(array $value)

返回当前可用的数据项。

id 属性
public string getId()
public void setId(string $value)

返回所有数据提供者的唯一标识ID。

itemCount 属性 只读
public integer getItemCount(boolean $refresh=false)

返回当前页面的数据项数目。 和count($provider->getData())的结果相同。 当pagination为false时,返回和totalItemCount相等的值。

keys 属性
public array getKeys(boolean $refresh=false)
public void setKeys(array $value)

返回相关数据项的键。

pagination 属性
public CPagination getPagination()
public void setPagination(mixed $value)

返回pagination对象。

sort 属性
public CSort getSort()
public void setSort(mixed $value)

返回sort对象。

totalItemCount 属性
public integer getTotalItemCount(boolean $refresh=false)
public void setTotalItemCount(integer $value)

返回所有数据项的总数。 当pagination为false时,返回的值与itemCount相等。

方法详细

calculateTotalItemCount() 方法
abstract protected integer calculateTotalItemCount()
{return} integer 数据项的总数。
abstract protected function calculateTotalItemCount();

设置数据项的总数。

fetchData() 方法
abstract protected array fetchData()
{return} array 数据项的列表
abstract protected function fetchData();

提取的持久性数据存储的数据。

fetchKeys() 方法
abstract protected array fetchKeys()
{return} array 数据项的键列表。
abstract protected function fetchKeys();

提取的持久性数据存储的数据键。

getData() 方法
public array getData(boolean $refresh=false)
$refresh boolean 数据是否可以再次从持久性存储中取出。
{return} array 返回当前可用的数据提供者的列表。
public function getData($refresh=false)
{
    if(
$this->_data===null || $refresh)
        
$this->_data=$this->fetchData();
    return 
$this->_data;
}

返回当前可用的数据项。

getId() 方法
public string getId()
{return} string 所有数据提供者的唯一标识ID。
public function getId()
{
    return 
$this->_id;
}

返回所有数据提供者的唯一标识ID。

getItemCount() 方法
public integer getItemCount(boolean $refresh=false)
$refresh boolean 键是否可被再次计算。
{return} integer 当前页面中的数据项数目。
public function getItemCount($refresh=false)
{
    return 
count($this->getData($refresh));
}

返回当前页面的数据项数目。 和count($provider->getData())的结果相同。 当pagination为false时,返回和totalItemCount相等的值。

getKeys() 方法
public array getKeys(boolean $refresh=false)
$refresh boolean 键是否可被再次计算。
{return} array data对应的键的列表。每个在data 的数据项都有一个唯一的键。
public function getKeys($refresh=false)
{
    if(
$this->_keys===null || $refresh)
        
$this->_keys=$this->fetchKeys();
    return 
$this->_keys;
}

返回相关数据项的键。

getPagination() 方法
public CPagination getPagination()
{return} CPagination pagination对象。当值为false时,表示禁用分页。
public function getPagination()
{
    if(
$this->_pagination===null)
    {
        
$this->_pagination=new CPagination;
        if((
$id=$this->getId())!='')
            
$this->_pagination->pageVar=$id.'_page';
    }
    return 
$this->_pagination;
}

返回pagination对象。

getSort() 方法
public CSort getSort()
{return} CSort sort对象。为false时,表示禁用排序。
public function getSort()
{
    if(
$this->_sort===null)
    {
        
$this->_sort=new CSort;
        if((
$id=$this->getId())!='')
            
$this->_sort->sortVar=$id.'_sort';
    }
    return 
$this->_sort;
}

返回sort对象。

getTotalItemCount() 方法
public integer getTotalItemCount(boolean $refresh=false)
$refresh boolean 所有数据项是否可被再次计算。
{return} integer 所有数据项的的数目。
public function getTotalItemCount($refresh=false)
{
    if(
$this->_totalItemCount===null || $refresh)
        
$this->_totalItemCount=$this->calculateTotalItemCount();
    return 
$this->_totalItemCount;
}

返回所有数据项的总数。 当pagination为false时,返回的值与itemCount相等。

setData() 方法
public void setData(array $value)
$value array 将数据项放到provider中。
public function setData($value)
{
    
$this->_data=$value;
}

为provider设置数据项。

setId() 方法
public void setId(string $value)
$value string 所有数据项provider的唯一标识ID。
public function setId($value)
{
    
$this->_id=$value;
}

设置provider的ID。

setKeys() 方法
public void setKeys(array $value)
$value array 设置provider数据项的键。
public function setKeys($value)
{
    
$this->_keys=$value;
}

为provider设置数据项的键。

setPagination() 方法
public void setPagination(mixed $value)
$value mixed 此pagination被provider使用。值为CPagination对象或配置 pagination对象的数组。如果值为false,表示禁用分页。
public function setPagination($value)
{
    if(
is_array($value))
    {
        
$pagination=$this->getPagination();
        foreach(
$value as $k=>$v)
            
$pagination->$k=$v;
    }
    else
        
$this->_pagination=$value;
}

设置provider的pagination对象。

setSort() 方法
public void setSort(mixed $value)
$value mixed 此排序被数据提供者使用。值为CSort对象或配置排序对象的数组。 如果值为false,表示禁用排序。
public function setSort($value)
{
    if(
is_array($value))
    {
        
$sort=$this->getSort();
        foreach(
$value as $k=>$v)
            
$sort->$k=$v;
    }
    else
        
$this->_sort=$value;
}

为数据提供者设置排序。

setTotalItemCount() 方法 (可用自 v1.1.1)
public void setTotalItemCount(integer $value)
$value integer 数据项的总数。
public function setTotalItemCount($value)
{
    
$this->_totalItemCount=$value;
}

设置所有数据项的总数。 此方法在calculateTotalItemCount不能计算时使用。