#21 2011.11.12 16:20

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Функция навигации по страницам

мне кажется 2, просто из-за того, что при расширении класса, не нужно будет следить за массивом доступных методов

Неактивен

#22 2011.11.12 22:27

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Функция навигации по страницам

СПС. smile Ну для этого и переписал. smile

Неактивен

#23 2011.11.23 21:57

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Функция навигации по страницам

Ошибка. По невнимательности. sad

Код:

1
span style="color: #0000BB"><?phpprivate function countPages() { if (null === $this->pages) { //$this->pages = $this->count / $this->items; $this->pages = ceil($this->count / $this->items); } return $this->pages; }?>

Добавлено спустя   5 минут  26 секунд:
Хочу/пытаюсь реализовать: 1 .. 5 6 [7] 8 6 .. 100 такую фишку.

Отредактировано tipsun (2011.11.23 22:00)

Неактивен

#24 2011.11.23 22:45

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Функция навигации по страницам

И надо было указывать в условии is_numeric(), чтоб с типами не возиться. А при занесении в свойство = (int).

Отредактировано tipsun (2011.11.23 22:45)

Неактивен

#25 2011.12.11 13:06

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Функция навигации по страницам

Код:

1
span style="color: #0000BB"><?php/** * pageMan * * @package * @author TiPsun * @copyright TiPsun * @version 2011 * @access public */class pageMan { private $count = null, $page = null, $_page = 1, $pages = null, $start = null; private static $items = 10; /** * pageMan::__construct() * * @param mixed $method - метод расчета. * @param mixed $count - количество записей. * @param mixed $page - указанная/текущая страница. * @param mixed $items - кол-во записей на страницу. * * @return void */ public function __construct($method, $count, $page, $items=null) { if (method_exists(__CLASS__, 'method_' . $method)) { $this->method = 'method_' . $method; } else { trigger_error('Nonexistent method', E_USER_ERROR); } if (is_numeric($count) and 0 < $count) { $this->count = (int)$count; } else { trigger_error('Value must be integer', E_USER_ERROR); } if (is_numeric($page) and 0 < $page) { $this->_page = (int)$page; } if (is_numeric($items)) { if (0 < $items) $this->items = (int)$items; else $this->items = $this->count; } else { $this->items = self::$items; } } /** * pageMan::countPages() * * Расчет общего кол-ва страниц. * * @return integer */ private function countPages() { if (null === $this->pages) { $this->pages = ceil($this->count / $this->items); } return $this->pages; } /** * pageMan::getPages() * * Получение общего числа страниц. * * @return integer */ public function getPages() { return self::countPages(); } /** * pageMan::setPage() * * Корректировка указанной/текущей страницы. * * @return integer */ private function setPage() { if (null === $this->page) { $this->page = min($this->_page, self::countPages()); } return $this->page; } /** * pageMan::getPage() * * Получение корректной текущей страницы. * * @return integer */ public function getPage() { return self::setPage(); } /** * pageMan::setStart() * * Расчет начальной точки отсчета показа записей в вашем цикле. * * @return integer */ private function setStart() { if (null === $this->start) { $this->start = (self::setPage() - 1) * $this->items; } return $this->start; } /** * pageMan::getStart() * * Получение начальной точки отсчета показа записей в цикле. * * @return integer */ public function getStart() { return self::setStart(); } /** * pageMan::method_array() * * Расчет конечной точки отсчета показа записей в цикле для массива данных. * * @return integer */ private function method_array() { return min((self::setStart() + $this->items), $this->count); } /** * pageMan::method_table() * * Расчет конечной точки отсчета показа записей в цикле для данных в таблице (DB). * * @return integer */ private function method_table() { return $this->items; } /** * pageMan::getStop() * * Получение конечной точки отсчета показа записей в цикле. * * @return integer */ public function getStop() { return call_user_method($this->method, $this); } /** * pageMan::prevPage() * * Получение номера предыдущей страницы. * * @return integer */ public function prevPage() { if (null === $this->page) { self::setPage(); } return 1 < $this->page ? $this->page - 1 : $this->page; } /** * pageMan::nextPage() * * Получение номера следующей страницы. * * @return integer */ public function nextPage() { if (null === $this->pages) { self::countPages(); } if (null === $this->page) { self::setPage(); } return $this->pages > $this->page ? $this->page + 1 : $this->page; } }?>

tipsun написал:

Хочу/пытаюсь реализовать: 1 .. 5 6 [7] 8 6 .. 100 такую фишку.

Такой вид:
1 .. 5 [6] 7 .. 15
Можно сделать вручную, условиями.

А такой:
1 .. 3 4 5 [6] 7 8 9 .. 15
Наверно лучше циклом или вложенной функцией.

Отредактировано tipsun (2011.12.11 13:46)

Неактивен

#26 2011.12.11 13:14

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Функция навигации по страницам

без phpDoc не нужно.

Неактивен

#27 2011.12.11 13:50

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Функция навигации по страницам

Еще надо это все: 1 .. 3 4 5 [6] 7 8 9 .. 15; в массиве возвращать, чтоб потом, например в шаблоне, все это удобно можно было вытащить и сделать ссылки.

Неактивен

#28 2011.12.11 14:00

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Функция навигации по страницам

у тебя не описано какие методы статические, а какие нет. будет кидать strict ошибки.

Неактивен

#29 2011.12.11 14:07

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Функция навигации по страницам

Или сделать функцию такую, чтоб пользователь в шаблоне через цикл сразу задавал свои страницы, а функция их обрабатывала.
Как-то так наверно.

Код:

1
span style="color: #0000BB"><?php/*pageCheck()@param mixed var@return integer*/function pageCheck($var) { if ($var == 'begin') { return 1; } if ($var == 'end') { return /* последняя страница */; } if ($begin < (int)$var and $end > (int)$var) { return $var; } }?>

Добавлено спустя   1 минуту  39 секунд:

Gemorroj написал:

у тебя не описано какие методы статические, а какие нет. будет кидать strict ошибки.

Это мне просто описать надо (phpDoc) или чего в коде не так?

Отредактировано tipsun (2011.12.11 14:13)

Неактивен

#30 2011.12.11 14:31

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Функция навигации по страницам

private function countPages() {
private static function countPages() {
и еще, если метод или свойство приватное или защищенное, название должно начинаться с подчеркивания.

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.014 s