Exemple #1
0
 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 ссылка');
 }
Exemple #2
0
 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;
 }
Exemple #3
0
 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;
 }
Exemple #4
0
 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();
 }
Exemple #5
0
 /** Определяем контроллер и действие */
 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;
         }
     }
 }
Exemple #6
0
 function testConstructor()
 {
     $u1 = new URL('one', 'two', 'three');
     $u2 = new URL();
     $u2->load('one', 'two', 'three');
     $this->assertEquals($u2->toString(), $u1->toString(), 'Конструктор и Load');
 }
Exemple #7
0
 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');
 }
Exemple #8
0
 /** @dataProvider dataTranslit */
 function testTranslit($str, $exp, $msg)
 {
     $this->assertEquals($exp, URL::Translit($str), $msg);
 }