#11 2011.10.28 22:47

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

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

Дык сыро еще же, не?
Или надо описать код/переменные/мое_восприятие_кода?
- - - -
Понял, описать код надо...
- - - -
Описал, поймите меня правильно smile

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

Неактивен

#12 2011.10.28 23:24

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

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

есть стандартизованный стиль описания кода. называется phpDoc... )

Неактивен

#13 2011.10.28 23:27

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

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

Ок, буду знать.
Хотя я и так еле описал код. Сам код понимаю, а вот описать сложно.

Неактивен

#14 2011.10.30 21:59

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

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

Есть замечания по классу моему?
- - - -
Я еще думаю может через static тоже принимать/отдавать значения.

Код:

1
2
3
4
5
6
7
8
<?php
 
pager::setItems(10);
pager::setMethod('array');
 
//или так путаница будет? типа лишнее?
 
?>

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

Неактивен

#15 2011.10.30 23:22

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

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

tipsun, сделай документацию в phpDoc стиле. Ориентироваться по ней проще будет для анализа.

Неактивен

#16 2011.11.06 19:30

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

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?php
 
/**
 * pager
 * 
 * @access public
 */
class pager {
        
       private
        $count,
        $page,
        $pages,
        $start,
        $stop,
        $items   10,
        $methods = array('array'=>0'table'=>0);
        
        /**
         * pager::__construct()
         * 
         * @param string $count
         * @param string $page
         * @param string $items
         * @return null
         */
        public function __construct($count=''$page=''$items='') {
            
            if (is_numeric($count) and $count) {
                
                $this->count $count;
            } else {
                
                trigger_error('Count number of the items is not numeric'E_USER_ERROR);
            }
            
            if (is_numeric($items) and $items and $this->count >= $items) {
                
                $this->items $items;
            }
            
            $this->pages ceil($this->count $this->items);
            $this->page  min(max(1, (int)$page), $this->pages);
        }
        
        /**
         * pager::calc()
         * 
         * @param mixed $method
         * @return null
         */
        private function calc($method) {
            
            $this->start = ($this->page -1) * $this->items;
            $this->stop  0;
            
            if('array' == $method$this->stop min(($this->start +$this->items), $this->count);
            if('table' == $method$this->stop $this->items;
        }
        
        /**
         * pager::method()
         * 
         * @uses function pager::calc()
         * 
         * @param string $method
         * @return null
         */
        public function method($method='undefined') {
            
            if (array_key_exists($method$this->methods)) {
                
                self::calc($method);
            } else {
                
                trigger_error('Nonexistent method'E_USER_ERROR);
            }
        }
        
        /**
         * pager::page()
         * 
         * @return integer param pager::page
         */
        public function page() {
            
            return $this->page;
        }
        
        /**
         * pager::pages()
         * 
         * @return integer param pager::pages
         */
        public function pages() {
            
            return $this->pages;
        }
        
        /**
         * pager::start()
         * 
         * @return integer param pager::start
         */
        public function start() {
            
            if ($this->start) return $this->start;
            else trigger_error('Missing indication of method of calculation'E_USER_ERROR);
        }
        
        /**
         * pager::stop()
         * 
         * @return integer param pager::stop
         */
        public function stop() {
            
            if ($this->stop) return $this->stop;
            else trigger_error('Missing indication of method of calculation'E_USER_ERROR);
        }
        
        /**
         * pager::down()
         * 
         * returns the number of the previous page
         * 
         * @return integer
         */
        public function down() {
            
            return $this->page $this->page -$this->page;
        }
        
        /**
         * pager::up()
         * 
         * returns the number of the next page
         * 
         * @return integer
         */
        public function up() {
            
            return $this->pages $this->page $this->page +$this->page;
        }
    }
 
?>

Отредактировано tipsun (2011.11.06 20:42)

Неактивен

#17 2011.11.09 21:15

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

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

Такое ощущение появилось, что я давно уже изобретаю велосипед (Zend Paginator). big_smile
А честно говоря зато я весь этот код теперь понимаю, хоть какой-то толк есть...

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?php
 
class pageMan {
        
        private
        $count null,
        $page  null$tmp_page 1,
        $pages null,
        $start null,
        $stop  null;
        
        private static
        $items   10,
        $methods = array('array'=>0'table'=>0);
        
        public function __construct($method$count$page$items=null) {
            
            if (array_key_exists($methodself::$methods)) {
                
                $this->$method $method;
            }
            else {
                
                trigger_error('Nonexistent method'E_USER_ERROR);
            }
            
            if (is_int($count) and $count) {
                
                $this->count $count;
            }
            else {
                
                trigger_error('Value must be integer'E_USER_ERROR);
            }
            
            if (is_int($page) and $page) {
                
                $this->tmp_page $page;
            }
            
            if (is_int($items)) {
                
                if ($items$this->items $items;
                else            $this->items $this->count;
            }
            else {
                
                $this->items self::$items;
            }
        }
        
        private function countPages() {
            
            if (null === $this->pages) {
                
                $this->pages $this->count $this->items;
            }
            
            return $this->pages;
        }
        
        public function getPages() {
            
            return self::countPages();
        }
        
        private function setPage() {
            
            if (null === $this->page) {
                
                $this->page min($this->tmp_pageself::countPages());
            }
            
            return $this->page;
        }
        
        public function getPage() {
            
            return self::setPage();
        }
        
        private function setStart() {
            
            if (null === $this->start) {
                
                $this->start = (self::setPage() - 1) * $this->items;
            }
            
            return $this->start;
        }
        
        public function getStart() {
            
            return self::setStart();
        }
        
        private function setStop() {
            
            if('array' == $this->method$this->stop min((self::setStart() + $this->items), $this->count);
            if('table' == $this->method$this->stop $this->items;
            
            return $this->stop;
        }
        
        public function getStop() {
            
            return self::setStop();
        }
        
        public function prevPage() {
            
            if (null === $this->page) {
                
                self::setPage();
            }
            
            return $this->page $this->page $this->page;
        }
        
        public function nextPage() {
            
            if (null === $this->pages) {
                
                self::countPages();
            }
            
            if (null === $this->page) {
                
                self::setPage();
            }
            
            return $this->pages $this->page $this->page $this->page;
        }
    }
/**/
 
?>

Отредактировано tipsun (2011.11.09 21:26)

Неактивен

#18 2011.11.09 22:17

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

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

ну так да.. это главная цель велосипедов)

Неактивен

#19 2011.11.10 20:58

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

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

Сделал через:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
//__construct
if (method_exists(__CLASS__'method_' $method)) $this->method $method;
 
private function method_array() { /* CODE */ }
private function method_table() { /* CODE */ }
 
public function getStop() {
 
return call_user_method($this->method$this);
}
 
?>

Отредактировано tipsun (2011.11.10 21:18)

Неактивен

#20 2011.11.11 15:31

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

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

Какой способ лучше?


Вложения

Отредактировано tipsun (2011.11.11 15:32)

Неактивен

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

forum.wapinet.ru

PunBB Mod v0.6.2
0.017 s