* @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()); } }