Qiang Xue
12 years ago
3 changed files with 160 additions and 11 deletions
@ -0,0 +1,100 @@
|
||||
<?php |
||||
/** |
||||
* @link http://www.yiiframework.com/ |
||||
* @copyright Copyright (c) 2008 Yii Software LLC |
||||
* @license http://www.yiiframework.com/license/ |
||||
*/ |
||||
|
||||
namespace yii\data; |
||||
|
||||
use Yii; |
||||
use yii\base\Component; |
||||
use yii\base\InvalidParamException; |
||||
|
||||
/** |
||||
* |
||||
* @author Qiang Xue <qiang.xue@gmail.com> |
||||
* @since 2.0 |
||||
*/ |
||||
abstract class DataProvider extends Component implements IDataProvider |
||||
{ |
||||
private $_sort; |
||||
private $_pagination; |
||||
|
||||
/** |
||||
* @return Pagination the pagination object. If this is false, it means the pagination is disabled. |
||||
*/ |
||||
public function getPagination() |
||||
{ |
||||
if ($this->_pagination === null) { |
||||
$this->_pagination = new Pagination; |
||||
} |
||||
return $this->_pagination; |
||||
} |
||||
|
||||
/** |
||||
* Sets the pagination for this data provider. |
||||
* @param array|Pagination|boolean $value the pagination to be used by this data provider. |
||||
* This can be one of the following: |
||||
* |
||||
* - a configuration array for creating the pagination object. The "class" element defaults |
||||
* to 'yii\data\Pagination' |
||||
* - an instance of [[Pagination]] or its subclass |
||||
* - false, if pagination needs to be disabled. |
||||
* |
||||
* @throws InvalidParamException |
||||
*/ |
||||
public function setPagination($value) |
||||
{ |
||||
if (is_array($value)) { |
||||
$this->_pagination = Yii::createObject(array_merge(array('class' => 'yii\data\Pagination'), $value)); |
||||
} elseif ($value instanceof Pagination || $value === false) { |
||||
$this->_pagination = $value; |
||||
} else { |
||||
throw new InvalidParamException('Only Pagination instance, configuration array or false is allowed.'); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* @return Sort the sorting object. If this is false, it means the sorting is disabled. |
||||
*/ |
||||
public function getSort() |
||||
{ |
||||
if ($this->_sort === null) { |
||||
$this->_sort = new Sort; |
||||
} |
||||
return $this->_sort; |
||||
} |
||||
|
||||
/** |
||||
* Sets the sort definition for this data provider. |
||||
* @param array|Sort|boolean $value the sort definition to be used by this data provider. |
||||
* This can be one of the following: |
||||
* |
||||
* - a configuration array for creating the sort definition object. The "class" element defaults |
||||
* to 'yii\data\Sort' |
||||
* - an instance of [[Sort]] or its subclass |
||||
* - false, if sorting needs to be disabled. |
||||
* |
||||
* @throws InvalidParamException |
||||
*/ |
||||
public function setSort($value) |
||||
{ |
||||
if (is_array($value)) { |
||||
$this->_sort = Yii::createObject(array_merge(array('class' => 'yii\data\Sort'), $value)); |
||||
} elseif ($value instanceof Sort || $value === false) { |
||||
$this->_sort = $value; |
||||
} else { |
||||
throw new InvalidParamException('Only Sort instance, configuration array or false is allowed.'); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Returns the number of data items in the current page. |
||||
* @return integer the number of data items in the current page. |
||||
*/ |
||||
public function getItemCount() |
||||
{ |
||||
return count($this->getItems()); |
||||
} |
||||
} |
@ -0,0 +1,59 @@
|
||||
<?php |
||||
/** |
||||
* @link http://www.yiiframework.com/ |
||||
* @copyright Copyright (c) 2008 Yii Software LLC |
||||
* @license http://www.yiiframework.com/license/ |
||||
*/ |
||||
|
||||
namespace yii\data; |
||||
|
||||
/** |
||||
* IDataProvider is the interface that must be implemented by data provider classes. |
||||
* |
||||
* Data providers are components that can provide data that are sorted and paginated. |
||||
* Data providers are often used with widgets, such as [[GridView]], [[ListView]] |
||||
* that display data and support sorting and pagination. |
||||
* |
||||
* @author Qiang Xue <qiang.xue@gmail.com> |
||||
* @since 2.0 |
||||
*/ |
||||
interface IDataProvider |
||||
{ |
||||
/** |
||||
* Returns the number of data items in the current page. |
||||
* This is equivalent to `count($provider->getItems())`. |
||||
* When [[pagination]] is false, this is the same as [[totalItemCount]]. |
||||
* @return integer the number of data items in the current page. |
||||
*/ |
||||
public function getItemCount(); |
||||
|
||||
/** |
||||
* Returns the total number of data items. |
||||
* When [[pagination]] is false, this is the same as [[itemCount]]. |
||||
* @return integer total number of possible data items. |
||||
*/ |
||||
public function getTotalItemCount(); |
||||
|
||||
/** |
||||
* Returns the data items in the current page. |
||||
* @return array the list of data items in the current page. |
||||
*/ |
||||
public function getItems(); |
||||
|
||||
/** |
||||
* Returns the key values associated with the data items. |
||||
* @return array the list of key values corresponding to [[items]]. Each data item in [[items]] |
||||
* is uniquely identified by the corresponding key value in this array. |
||||
*/ |
||||
public function getKeys(); |
||||
|
||||
/** |
||||
* @return Sort the sorting object. If this is false, it means the sorting is disabled. |
||||
*/ |
||||
public function getSort(); |
||||
|
||||
/** |
||||
* @return Pagination the pagination object. If this is false, it means the pagination is disabled. |
||||
*/ |
||||
public function getPagination(); |
||||
} |
Loading…
Reference in new issue