Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
26 / 26 |
| Page | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
8 | |
100.00% |
26 / 26 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
| getPageNo | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getLinkURL | |
100.00% |
1 / 1 |
5 | |
100.00% |
18 / 18 |
|||
| toArray | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| <?php | |
| namespace Puyo\Pager; | |
| /** | |
| * ページ | |
| */ | |
| class Page | |
| { | |
| /** | |
| * ページ番号 | |
| * @var int | |
| */ | |
| private $pageNo; | |
| /** | |
| * コントローラのURI | |
| * @var string | |
| */ | |
| private $controllerURI; | |
| /** | |
| * ページ番号を表すパラメータの名前 | |
| * @var string | |
| */ | |
| private $paramName; | |
| /** | |
| * コンストラクタ | |
| * @param string|int $pageNo ページ番号 | |
| * @param string $controllerURI コントローラのURI | |
| * @param string $paramName | |
| */ | |
| public function __construct($pageNo, $controllerURI, $paramName) { | |
| $this->pageNo = intVal($pageNo); | |
| $this->controllerURI = $controllerURI; | |
| $this->paramName = $paramName; | |
| } | |
| /** | |
| * ページ番号を返す | |
| * @return int ページ番号 | |
| */ | |
| public function getPageNo() { | |
| return $this->pageNo; | |
| } | |
| /** | |
| * リンク用のURLを返す | |
| * @return string リンク用URL | |
| */ | |
| public function getLinkURL() { | |
| $paramName = $this->paramName; | |
| $linkURL = $this->controllerURI; | |
| if(preg_match("/&$paramName=/", $linkURL) === 1) { // pageパラメタあり(途中) | |
| // 古いpageパラメタを消して末尾に追加 | |
| $linkURL = preg_replace("/(&+)$paramName=(\d+)/", '', $linkURL); | |
| $linkURL .= "&$paramName=" . $this->pageNo; | |
| } elseif(preg_match("/\?$paramName=/", $linkURL) === 1) { // pageパラメタあり(先頭) | |
| if(preg_match('/&/', $linkURL) === 1) { // 他のパラメタあり | |
| // 古いpageパラメタを消して詰め,末尾に追加 | |
| $linkURL = preg_replace("/\?$paramName=(\d+)&/", '?', $linkURL); | |
| $linkURL .= "&$paramName=" . $this->pageNo; | |
| } else { // 他のパラメタなし | |
| // 古いpageパラメタを消して付け直す | |
| $linkURL = preg_replace("/\?$paramName=(\d+)/", '', $linkURL); | |
| $linkURL .= "?$paramName=" . $this->pageNo; | |
| } | |
| } else { // pageパラメタなし | |
| if(preg_match('/\?/', $linkURL) > 0) { // 他のパラメタあり | |
| $linkURL .= "&$paramName=" . $this->pageNo; | |
| } else { // 他のパラメタなし | |
| $linkURL .= "?$paramName=" . $this->pageNo; | |
| } | |
| } | |
| return $linkURL; | |
| } | |
| /** | |
| * このオブジェクトをHashにして返す | |
| * @return array ページ | |
| */ | |
| public function toArray() { | |
| $hash['pageNo'] = $this->pageNo; | |
| $hash['url'] = $this->getLinkURL(); | |
| return $hash; | |
| } | |
| } |