Вы не зашли.
Ок. Понял. СПС.
Хотя не совсем понял, в гугле посмотрю...
Отредактировано tipsun (2011.12.11 14:02)
Вот насчет этого вроде понял, типа:
Код:
span style="color: #0000BB"><?phpself::countPages();//если будешь так использовать, значит надо эту функцию пометить как static?> |
Отредактировано tipsun (2011.12.11 15:03)
Private, protected переменную называть: $_name;
А я думал в phpdoc комментарии просто @param mixed _$var;
- - - -
Так теперь надо это все дело сделать...
Отредактировано tipsun (2011.12.11 16:04)
да, phpDoc - это просто комментарии. А Private, protected - это базовый ООП.
Код:
span style="color: #0000BB"><?php/** * pageMan * * @package * @author TiPsun * @copyright TiPsun * @version 2011 * @access public */class pageMan { private $_method = null, $_count = null, $_page = null, $_tmpPage = 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->_tmpPage = (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 static 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 static function _setPage() { if (null === $this->_page) { $this->_page = min($this->_tmpPage, self::_countPages()); } return $this->_page; } /** * pageMan::getPage() * Получение корректной текущей страницы. * @return integer */ public function getPage() { return self::_setPage(); } /** * pageMan::_setStart() * Расчет начальной точки отсчета показа записей в вашем цикле. * @return integer */ private static 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::_methodArray() * Расчет конечной точки отсчета показа записей в цикле для массива данных. * @return integer */ private function _methodArray() { return min((self::_setStart() + $this->_items), $this->_count); } /** * pageMan::_methodTable() * Расчет конечной точки отсчета показа записей в цикле для данных в таблице (DB). * @return integer */ private function _methodTable() { 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 (2011.12.11 16:04)
Gemorroj написал:
А Private, protected - это базовый ООП.
В курсе
Иначе я бы не применял все это.
Насколько я знаю...
protected/
private - это если указать, то действует только в самом классе.
Код:
span style="color: #0000BB"><?php//т.е. его нельзя так вызвать:$myClass = new someClass();$myClass->myVar; //- со свойством$myClass->myMethod(); //- с методом//static типа вызывать вот так:self::myVar; //- внутри класса иmyClass::myVar; //- вне класса, если не private/protected и если $this не было использовано.self::myMethod(); //иmyClass::myMethod(); //если не private/protected и если $this не было использовано.?> |
Отредактировано tipsun (2011.12.11 18:06)
Бле... Чет я не то сделал.
Там же при static нельзя $this использовать...
Gemorroj, А где надо было static ставить?
До этого разве все правильно не было?
Отредактировано tipsun (2011.12.11 21:09)
либо вызывай метод как динамический, либо делай его статическим.
Gemorroj, ты про такой вызов?
Код:
span style="color: #0000BB"><?phppublic function getPages() { return self::_countPages(); }?> |
И его надо переделать под это?
Код:
span style="color: #0000BB"><?phppublic function getPages() { return call_user_method('_countPages', $this); }?> |
А под статический придется и переменные все переделать под self::
Отредактировано tipsun (2011.12.11 21:09)
Да блять.
смотри свой код из 25 поста.
Код:
public function getPages() { |
|
return self::countPages(); |
} |
отсюда следует, что метод countPages у тебя должен быть статическим.
если ты не хочешь делать его статическим, то вызывай его не как статический, а динамический. Т.е. $this->countPages();