function testToString() { $u = new URL('one', 'two', array('hello' => 'john')); $this->assertEquals('/one/two/hello:john/', $u->toString(), 'Построение адреса'); $this->assertEquals($u->toString(), (string) $u, 'Приведение объекта к строке'); $this->assertEquals('<a class="hello" href="/one/two/hello:john/" target="_blank">hi</a>', $u->toHTML('hi', 'hello', '_blank'), 'HTML ссылка'); }
public function getController(Request $request) { $url = new URL($request->getPathInfo()); $one = $url->getArgument(1); $two = $url->getArgument(2); $controller = 'default'; $action = 'index'; if ($this->checkControllerFileExists($one)) { $controller = $one; if ($two) { $action = $two; } } else { if (!$this->checkControllerFileExists($controller)) { throw new HttpException(404, $controller . 'Controller.php не существует'); } if ($one) { $action = $one; } } $callable = $this->createController($controller, $action, $request, $url); if (!is_callable($callable)) { throw new HttpException(404, sprintf('Метод %sAction в контроллере %sController не найден', $action, $controller)); } return $callable; }
function __construct($controller, $action, URL $url = null) { if (is_null($url)) { $url = new URL(); $url->load(); } $this->controller = $controller; $this->action = $action; $this->url = $url; }
function __construct(Request $request, URL $url = null) { if (is_null($url)) { $url = new URL(); $url->load(); // Request убивает двоеточия в URL, поэтому используется $_SERVER['REQUEST_URI'] } $this->setRequest($request); $this->setUrl($url); $this->init(); }
/** Определяем контроллер и действие */ protected function processURL() { $one = $this->url->getArgument(1); $two = $this->url->getArgument(2); $this->controller = 'default'; $this->action = 'index'; if ($this->checkControllerFileExists($one)) { $this->controller = $one; if ($two) { $this->action = $two; } } else { if (!$this->checkControllerFileExists($this->controller)) { throw new Exception($this->controller . 'Controller не существует', Exception::NOT_FOUND); } if ($one) { $this->action = $one; } } }
function testConstructor() { $u1 = new URL('one', 'two', 'three'); $u2 = new URL(); $u2->load('one', 'two', 'three'); $this->assertEquals($u2->toString(), $u1->toString(), 'Конструктор и Load'); }
function testGetPage() { $u = new URL('/'); $this->assertEquals(1, $u->getPage(), 'Страница не указана явно'); $u = new URL('/page:0/'); $this->assertEquals(1, $u->getPage(), 'Номер страницы должен быть больше 1'); $u = new URL('/page:10/'); $this->assertEquals(1, $u->getPage(5), 'Номер страницы должен не больше общего числа страниц'); $u = new URL('/page:10/'); $this->assertEquals(10, $u->getPage(), 'Номер страницы из URL'); }
/** @dataProvider dataTranslit */ function testTranslit($str, $exp, $msg) { $this->assertEquals($exp, URL::Translit($str), $msg); }