title
Description
Body
|
|
Отредактировано tipsun (2011.03.27 23:50)
Неактивен
|
|
Отредактировано tipsun (2011.03.27 23:50)
Неактивен
Вот попытался под разделение логики сделать.
Еще вот че интересно:
Разумно ли сделать, чтоб функция использовала define(); ?
Мне кажется это будет для пользователя (или посто меня ) удобней.
|
|
Отредактировано tipsun (2011.08.21 17:50)
Неактивен
Неактивен
Ухаха: testMarkingOneSessionObjectImmutableShouldMarkOtherInstancesImmutable
- - - -
Там все есть что-ли?
А че тогда делать в PHP вообще?
- - - -
И еще главное все так аккуратно написано и с cache
Отредактировано tipsun (2011.08.21 21:23)
Неактивен
Не оставляю надежды написать толковый навигатор по страницам.
|
|
Отредактировано tipsun (2011.10.28 23:35)
Неактивен
Дык сыро еще же, не?
Или надо описать код/переменные/мое_восприятие_кода?
- - - -
Понял, описать код надо...
- - - -
Описал, поймите меня правильно
Отредактировано tipsun (2011.10.28 23:22)
Неактивен
Есть замечания по классу моему?
- - - -
Я еще думаю может через static тоже принимать/отдавать значения.
|
|
Отредактировано tipsun (2011.10.30 22:05)
Неактивен
|
|
Отредактировано tipsun (2011.11.06 20:42)
Неактивен
Такое ощущение появилось, что я давно уже изобретаю велосипед (Zend Paginator).
А честно говоря зато я весь этот код теперь понимаю, хоть какой-то толк есть...
|
|
Отредактировано tipsun (2011.11.09 21:26)
Неактивен
Сделал через:
|
|
Отредактировано tipsun (2011.11.10 21:18)
Неактивен
Ошибка. По невнимательности.
|
|
Добавлено спустя 5 минут 26 секунд:
Хочу/пытаюсь реализовать: 1 .. 5 6 [7] 8 6 .. 100 такую фишку.
Отредактировано tipsun (2011.11.23 22:00)
Неактивен
|
|
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)
Неактивен
Или сделать функцию такую, чтоб пользователь в шаблоне через цикл сразу задавал свои страницы, а функция их обрабатывала.
Как-то так наверно.
|
|
Добавлено спустя 1 минуту 39 секунд:
Gemorroj написал:
у тебя не описано какие методы статические, а какие нет. будет кидать strict ошибки.
Это мне просто описать надо (phpDoc) или чего в коде не так?
Отредактировано tipsun (2011.12.11 14:13)
Неактивен
private function countPages() {
private static function countPages() {
и еще, если метод или свойство приватное или защищенное, название должно начинаться с подчеркивания.
Неактивен
Вот насчет этого вроде понял, типа:
|
|
Отредактировано tipsun (2011.12.11 15:39)
Неактивен
Private, protected переменную называть: $_name;
А я думал в phpdoc комментарии просто @param mixed _$var;
- - - -
Так теперь надо это все дело сделать...
Отредактировано tipsun (2011.12.11 16:28)
Неактивен
|
|
Отредактировано tipsun (2011.12.11 16:58)
Неактивен
Gemorroj написал:
А Private, protected - это базовый ООП.
В курсе Иначе я бы не применял все это.
Насколько я знаю...
protected/private - это если указать, то действует только в самом классе.
|
|
Отредактировано tipsun (2011.12.11 18:32)
Неактивен
Бле... Чет я не то сделал.
Там же при static нельзя $this использовать...
Gemorroj, А где надо было static ставить?
До этого разве все правильно не было?
Отредактировано tipsun (2011.12.11 21:02)
Неактивен
Gemorroj, ты про такой вызов?
|
|
И его надо переделать под это?
|
|
А под статический придется и переменные все переделать под self::
Отредактировано tipsun (2011.12.11 21:33)
Неактивен
Да блять.
смотри свой код из 25 поста.
|
|
отсюда следует, что метод countPages у тебя должен быть статическим.
если ты не хочешь делать его статическим, то вызывай его не как статический, а динамический. Т.е. $this->countPages();
Неактивен
|
|
Вот... первые шаги к ::10 11 [12] 13 14::
|
|
Наверно все-таки придется делать в классе отдельный метод и возвращать массив.
А то в шаблоне столько катать каждый раз не то.
А в шаблоне уже сделать еще foreach() цикл и закреплять там ссылки.
Хотя по идее можно было бы принять этот адрес,
обработать htmlspecialchars() и нормально, наверно.
Отредактировано tipsun (2011.12.12 16:47)
Неактивен
Сам интерфейс класса не нравится.
* @param mixed $method
* @param mixed $count
* @param mixed $page
* @param mixed $items
new pageMan('array', 1768, $pageNum);
откуда я узнаю что 1 параметром нужно передать строку array ? O_o
и так же про остальные параметры.
Продумай сначала как внешне твой класс будет работать.
Например, удобно было бы как-то так:
|
|
Неактивен
Ойбле
А мануал для чего?
- - - -
Ладно, переделаю.
Так еще надо будет следить ввел ли вообще пользователь параметр или нет.
- - - -
|
|
Отредактировано tipsun (2011.12.12 20:11)
Неактивен
Осталось теперь отслеживать ввод данных.
|
|
Отредактировано tipsun (2011.12.12 21:18)
Неактивен
вынеси свои параметры для setMethod в константы класса хотябы. а вообще я не вижу в setMethod вообще необходимости.
и проверять не надо, используй дефолтовые значения.
А, типа как ты показал getArray()/getTable().
Но там тогда надо будет массивом возвращать.
- - - -
Т.к. у меня там getStart точка отсчета.
Знач если getStop не будет, то просто все в одном вернуть и все.
Отредактировано tipsun (2011.12.12 22:10)
Неактивен
Набросок.
Бле там за данными не уследишь.
|
|
Отредактировано tipsun (2011.12.12 23:17)
Неактивен
Оу! Да действительно.
Надо константу объявить.
|
|
Отредактировано tipsun (2011.12.13 12:25)
Неактивен
|
|
Добавлено спустя 3 минуты 2 секунды:
Еще если условию 0 < не удовлетворяет, то надо опять присвоить из константы
Отредактировано tipsun (2011.12.13 12:29)
Неактивен
|
|
Отредактировано tipsun (2011.12.13 18:54)
Неактивен
Вот еще заметил. Зачем 2 раза к методу обращаться, если свойство с 1 запуска метода будет определено.
|
|
Отредактировано tipsun (2011.12.13 23:06)
Неактивен
Набросок.
|
|
Отредактировано tipsun (2011.12.14 18:40)
Неактивен
|
|
Отредактировано tipsun (2011.12.15 19:43)
Неактивен
А может быть даже просто "схитрить"
Чем делать в цикле лишнее условие, лучше в стиле a:active просто по-другому пометить и все
Вот мне и активная/текущая страница.
Отредактировано tipsun (2011.12.15 19:56)
Неактивен
Ну вроде цвет активной ссылки должен меняться ведь? Если я не ошибся, то должно сработать.
CSS
|
|
PHP
|
|
Добавлено спустя 1 минуту 4 секунды:
Сейчас проверю. ~_~
Добавлено спустя 8 минут 21 секунду:
Эх, не то. Это при клике работает.
|
|
Вроде чет было типа активная ссылка (на которой ты сейчас находишься) другим цветом отображается, или это я ступил?
Отредактировано tipsun (2011.12.15 21:35)
Неактивен
PHP file
|
|
TPL file
|
|
- - - -
А если записей слишком мало, то как быть?
В логике сделать так, чтоб подключался шаблон без навигации?
Отредактировано tipsun (2011.12.16 11:57)
Неактивен
Пытаюсь сделать типа если недостает ранжировка до (2 * $range + 1) то перебросить значения с начала в конец. И наоборот.
Пока чет не соображу.
|
|
Отредактировано tipsun (2011.12.16 18:16)
Неактивен
Кажется получилось!!!
Смотрел при 10-100 записях (10 записей = 1стр.) нормально.
|
|
Отредактировано tipsun (2011.12.17 12:10)
Неактивен
Ну это предназначалось для перекидывания значений между начальной и конечной точкой.
Т.е. вместо:
- 1) [1] 2 3 4
будет:
[1] 2 3 4 5 6 7
т.е. минусовая ранжировка превратилась в плюсовую.
Для чего это?
Для плавной прокрутки.
Вместо:
- 2) 1 [2] 3 4 5
будет:
1 [2] 3 4 5 6 7
И чо?
Ну если посмотреть в пункт (1) там 4 элемента. А в (2) уже 5.
В принципе это все не так уж необходимо.
- - - -
Еще думаю добавить начальную и конечную страницу,
но при этом нарушается плавность.
Отредактировано tipsun (2011.12.18 22:25)
Неактивен
Получилось!
Строго 7 элементов/квадратиков с номерами страниц, при использовании -2/+2 ранжировки.
|
|
Отредактировано tipsun (2012.01.05 13:18)
Неактивен
phpDoc не совсем верные
@return object замени на @return pageMan
@param mixed $count на @param integer $count
и тд. так же убери pageMan::getTable() и проч, как будто ты описываешь статические методы.
а так, не вдаваясь в подробности выглядит норм.
Неактивен
Математика у меня в pageMan::pageRange() неправильная, мне кажется.
Хотя там все работает верно.
Если расчитать все четко не получится, то увы. Будет как есть.
Отредактировано tipsun (2011.12.20 23:20)
Неактивен
Я с телефона, и половины темы не осилил! Код обрезает ппц! Убери для вап версии, в стиле (забыл как называеется) скроулинг
Неактивен
Единственное, что в голову приходит - это оптимизация.
Сейчас поправки внесу и выложу.
Вот. (Этот гребаный виндовс завирусованный, после восстановления мои архивы пропали! >_<)
|
|
Отредактировано tipsun (2011.12.23 20:02)
Неактивен
Akdmehp написал:
255, tipsun, смотрю навигацию в "живом" режиме.
Приятно, что используется
phpDoc - это плюс.
Итак, не совсем понял, зачем
делать так: $_count=null;
приравнивание переменной значению null равно её
удалению. То есть, ты
создаешь переменную, удаляя
её. Проще либо приравнивать
нулю или значениям по-
умолчанию, либо так: private $_count, $_page,
$_pages, $_start, $_tmpPage =
1, $_items = 10;
Не хватает для наглядности
примера использования.
Плохо, что нету конструктора, так было бы намного
нагляднее, советую добавить
конструктор.
Также по правилам хорошего
тона имя класса делаем с
большой. в phpDoc после * @param mixed
$count указываем что эта
переменная значит - по
правилам хорошего тона, ну и
после return указываем, что
именно возвращает. Советую использовать в
классе систему try/catch, это
будет намного логичнее, чем
генерировать ошибки.
Пример конструктора на твоем
коде, хотя я все равно бы код рефакторил:
__construct($count, $page,
$items);
Просмотрел. В принципе,
работы очень много, все можно
переделать короче и лучше, используя в два раза меньше
методов, так как это в свою
очередь запутывает код. В общем, работай дальше!
Благодаря Gemorroj'ю (насчет phpDoc) плюс заработал
Добавлено спустя 5 минут 51 секунду:
Я вот уже думаю насчет рефактора кода и конструктор, в принципе, добавить не проблема.
Добавлю конструктор а переменные буду обрабатывать методами, которые принимают данные.
try/catch даже не знаю че такое, придется учить.
Насчет $var = null; даже не знал.
Отредактировано tipsun (2012.01.04 11:34)
Неактивен
>> приравнивание переменной значению null равно её
удалению.
нет, это не так. если переменная существует (даже со значением null), под нее уже выделена память.
в остальном все так.
ссылки на стандарты кодирования
http://pear.php.net/manual/ru/standards.php
http://framework.zend.com/manual/ru/cod … ndard.html
я бы советовал придерживаться зендовских соглашений. PEAR отличается в мелочах.
Неактивен
Gemorroj написал:
phpDoc не совсем верные
@return object замени на @return pageMan
@param mixed $count на @param integer $count
и тд. так же убери pageMan::getTable() и проч, как будто ты описываешь статические методы.
а так, не вдаваясь в подробности выглядит норм.
Сделано.
Отредактировано tipsun (2012.01.04 19:50)
Неактивен
а зачем ты пишешь в доках название метода а потом описание?
по правилам сначала короткое описание, а потом развернутое. дублировать название метода не надо
Добавлено спустя 55 секунд:
|
|
@param нету
Неактивен
Чет никак.
Может как тогда сделать, через __construct($count, $page, $items)
Сделать параметры обязательными, и убрать все эти setCount(), и т.д.
Тогда и ошибки ловить не надо будет.
Я вообще их ловить не умею, ну через try/catch
Неактивен
Ну ловить тоже че,
|
|
Это понятно, а как в коде, куда это все.
Неактивен
|
|
Отредактировано tipsun (2012.01.05 18:36)
Неактивен
__construct() и типа рефакторинг. Все вытекающие последствия.
Если чего тут (в теме) архив есть, с него заново начну.
|
|
Отредактировано tipsun (2012.01.05 19:06)
Неактивен
это полный ахтунг! весь смысл конструктора просто катится в говно)
зачем ты в getArray делаешь такую проверку? if (null === $this->_count) {
что мешает делать ее в сеттере, а по дефолту задать нормальные значения?
Неактивен
Фух, вот как бы.
|
|
Отредактировано tipsun (2012.01.05 23:46)
Неактивен
убери из конструктора передачу параметров и мб сделай класс сингелтоном.
так же исправь вызовы isNatural
сам isNatural можно сделать таким:
return (is_numeric($var) and 0 < $var);
Неактивен
Хмм, я её даже переименовал, все. Все равно ошибку дает.
Fatal error: Call to undefined function kakaxa() in /usr/home/tipsun/ext/pageman/index.php on line 44
Если её убрать. То на следующий вызов так же говорит.
Чудеса и только...
Отредактировано tipsun (2012.01.05 23:34)
Неактивен
Все написал фишку #103, связана с $this->_page и $this->getPage()
Не хотел использовать $_tmpPage
Расчитана на повторное использование getPage() чтоб лишний раз лишние функции не трогать
Оригинальный дебилизм
Все таки $_tmpPage проще намного. Потом переделаю.
Отредактировано tipsun (2012.01.05 23:56)
Неактивен
|
|
Отредактировано tipsun (2012.01.06 11:38)
Неактивен
Может __clone() и __wakeup() переназвачить на:
|
|
Неактивен
нет. обычно их делают приватными просто. так же как и конструктор.
и назови метод не singleton, а getInstance.
вообще, я тут подумал, может это и плохая идея сингелтон для пагинатора. т.к. на странице может быть несколько разных пагинаций, и в случае с сингелтоном реализовать их будет не оч удобно, т.к. мы будем работать с 1 объектом.
Неактивен
Ок, конструктор приватным сделаю.
Снесу синглтон.
|
|
Отредактировано tipsun (2012.01.06 21:38)
Неактивен
Да прекрати ты использовать наконец $_pages = null, $_start = null;, это глупо!
Я же говорил, просто назови их, да дело в шляпе: private $_pages, $_start.
Или я не прав?
Неактивен
|
|
Отредактировано tipsun (2012.01.06 22:07)
Неактивен
Akdmeh, да пофик на самом деле. И так, и так переменная будет со значением null. Если мы явно это указываем, мб, так нагляднее, если не указываем - экономим несколько символов кода)
tipsun, false - это худший вариант.
isNatural сделай приватным или защищенным.
getPageRange($range='') не документирован параметр $range.
$range = $this->isNatural($range) ? (int)$range : DEFAULT_RANGE; не верно. вместо DEFAULT_RANGE нужно self::DEFAULT_RANGE.
сам DEFAULT_RANGE тоже документируй.
думаю, параметр $range лучше в объявлении метода указать так public function getPageRange($range = PageMan::DEFAULT_RANGE).
Да и вообще, константу лучше переназвать как минимум RANGE_DEFAULT. Чтобы если добавятся новые RANGE_* у них был один префикс.
Неактивен
Ок. Но я думал, что задав getPageRange($range='')
'' - это уже (string).
(-хотя это не совсем то, наверно false лучше или тот же null-)
При проверке на натуральность первая проверка даст ошибку, второе условие даже не будет проверяться.
Значит и само условие даст ошибку. И обойдемся без (int), которое тоже вроде время забирает. Хотя по умолчанию (RANGE_DEFAULT) у нас и так (int). Сделаю без = null;
ну так: private $var1, $var2;
Отредактировано tipsun (2012.01.07 10:54)
Неактивен
tipsun написал:
Ок. Но я думал, что задав getPageRange($range='') '' - это уже (string).
да стринг, но человека использующего твой код этот стринг введет в замешательство. Если тебя так беспокоит явное приведение к инту, то можешь его убрать вообще, isNatural уже говорит о том, что использование переменной будет безопасным.
Неактивен
|
|
Неактивен
Не проблема. Сейчас.
|
|
Отредактировано tipsun (2012.01.07 22:09)
Неактивен
ну по архитектуре, вроде норм)
то, что получается на выходе мне оценивать сложно. нужно, наверное, простые экзамплы с примерами реально работающей пагинации.
Неактивен
|
|
Надо конструкт публичным сделать.
Отредактировано tipsun (2012.01.08 02:07)
Неактивен
|
|
Отредактировано tipsun (2012.01.08 02:12)
Неактивен
|
|
Отредактировано tipsun (2012.01.08 08:44)
Неактивен
Тогда getPageRange()
надо сделать управляющим.
В нем вызывать определенные методы со своими расчетами/математикой.
После устранять неточности и строить ранжировку.
- - - -
Или сделать _buildRange();
В котором так же устраняются неточности.
Отредактировано tipsun (2012.01.08 09:59)
Неактивен
Gemorroj написал:
так да. типовая ситуация. в самом простом случае, делается 2 публичных метода с отличающимся кодом и 1 приватный с общим для этих 2-х методов.
Как ты говорил, так, в итоге, и вышло все таки
|
|
|
|
Отредактировано tipsun (2012.01.08 21:52)
Неактивен
Хмм. Зачем так далеко было идти?
Просто надо было в setCount сделать так:
|
|
А если так, то можно убрать лишнее:
|
|
Отредактировано tipsun (2012.01.10 14:12)
Неактивен
Все, правку у себя тоже делаю сейчас.
Добавлено спустя 4 минуты 44 секунды:
Нет. Ошибаюсь.
А если метод вообще не будет вызван, а? Ну я Петросян.
Расскоментировать надо закомментированное.
Отредактировано tipsun (2012.01.10 15:26)
Неактивен
Еще можно в конструкте сделать так:
Или метод сделать такой.
|
|
А еще так можно.
|
|
Отредактировано tipsun (2012.01.18 00:58)
Неактивен
|
|
Отредактировано tipsun (2012.01.18 11:03)
Неактивен
Данные:
1) указаны*
1.1) корректны
1.2) не корректны
2) не указаны**
- - - -
1.1: все как обычно.
1.2: определить переменные, которые должны будут расчитаны в последующем, чтоб зря не запускать методы/функции.
2: см. пункт (1.1)
- - - -
* - значит использовали методы-указатели (так их обзову).
** - были пропущены или вообще не использовались методы-указатели.
- - - -
Как-то так вот почему-то думаю.
Пост #137.
_start в принципе определить заранее тоже можно.
- - - -
А вообще нормальный пользователь сначала проверит, если записи или нет.
|
|
Отредактировано tipsun (2012.01.18 23:57)
Неактивен
|
|
Ну как-то так.
|
|
Отредактировано tipsun (2012.01.19 15:11)
Неактивен
в методе getTable нужно документировать выходные параметры.
и примеры упростить сильно.
|
|
Неактивен
PageMan.zip {Пароль: 745963}
Отредактировано tipsun (2012.01.23 18:27)
Неактивен
Я не проверил. СПС, исправил.
Я в другом архиве видимо держал код. Я исправлял вроде эту ошибку.
PageMan.zip {Пароль: 78963}
Отредактировано tipsun (2012.01.23 21:38)
Неактивен
Мне кажется, что ты слишком много времени убиваешь на эту пагинацию, займись чем-то еще, потом возвратишься.
Основная проблема - нету нормального конструктора.
Завтра еще подробнее посмотрю.
Неактивен
|
|
|
|
Отредактировано tipsun (2013.02.01 22:45)
Неактивен
Письмо из центpа до Штиpлица не дошло...
Он пpочитал его еще pаз. Опять не дошло...
Пpишлось читать в тpетий pаз.
Добавлено спустя 5 минут 19 секунд:
Akdmeh за весь год не нашел времени посмотреть мою говновигацию.
Добавлено спустя 5 минут 45 секунд:
А так с первого поста уже почти 2 года.
Неактивен
|
|
Это код постраничной навигации sea downloads 2. Подскажите пожалуйста ,как сделать чтобы отображались только первая, последняя, текущая, следующая и предыдущая страницы. Надо исключить ссылки на две страницы, которая перед предыдущей и которая за следующей. Голову сломал, не знаю как сделать.
Пример подобной постраничной навигации в в движке этого форума http://wapinet.ru/forum/wap/viewtopic.php?id=1281&p=12 . Нужно исключить десятую и четырнадцатую страницу.
Отредактировано Merzavetz (2013.01.22 14:27)
Неактивен
Gemorroj написал:
"Не прошло и года" (с) совсем чуть-чуть осталось)
Как всегда, ты прав.
Поправил функцию: paginationRange();
Пост #150
Добавлено спустя 2 минуты 18 секунд:
А вообще я сам честно говоря бы делал все очень просто, через форму.
Отредактировано tipsun (2013.02.01 23:10)
Неактивен
Еще одна, на мой взгляд, уместная поправка. Сравнить можно этот и пост #150.
|
|
Неактивен