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