forked from yiisoft/yii2
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added DataProvider and IDataProvider.
Showing
3 changed files
with
160 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 <[email protected]> | ||
* @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()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 <[email protected]> | ||
* @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(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters