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