| 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; | |
| } | |
| } |