1 <?xml version="1.0" encoding="UTF-8"?>
3 <sect3 id="zend.controller.router.routes.hostname">
4 <title>Zend_Controller_Router_Route_Hostname</title>
7 <classname>Zend_Controller_Router_Route_Hostname</classname> является
8 маршрутом, основанным на имени хоста. Он работает аналогично
9 стандартному маршруту, но использует имя хоста в URL вместо пути.
13 Возьмем пример из описания стандартного маршрута и посмотрим, как
14 это будет выглядеть при использовании имени хоста. Вместо того, чтобы
15 указывать пользователя через путь, нам требуется, чтобы можно было
16 набрать URL вида <code>http://martel.users.example.com</code> для
17 того, чтобы увидеть информацию о пользователе "martel":
20 <programlisting language="php"><![CDATA[
21 $hostnameRoute = new Zend_Controller_Router_Route_Hostname(
22 ':username.users.example.com',
24 'controller' => 'profile',
25 'action' => 'userinfo'
29 $plainPathRoute = new Zend_Controller_Router_Route_Static('');
31 $router->addRoute('user', $hostnameRoute->chain($plainPathRoute);
35 Первым параметром в конструкторе
36 <classname>Zend_Controller_Router_Route_Hostname</classname> является
37 определение маршрута, которое будет сопоставляться с именем хоста.
38 Определения маршрутов содержат статические и динамические части,
39 разделенные точкой ('.'). Динамические части, называемые
40 переменными, помечаются знаком двоеточия:
41 <code>:username</code>. Статические части являются обычным текстом:
46 Технически маршруты по имени хоста могут использоваться сами по
47 себе, но этого никогда не следует делать по той причине, что
48 сам по себе такой маршрут может соответствовать любому
49 пути. Поэтому нужно объединять маршруты по имени хоста
50 с маршрутами по пути. Это можно делать так, как
51 показано в примере выше - путем вызова
52 <varname>$hostnameRoute->chain($pathRoute);</varname>.
53 При этом <varname>$hostnameRoute</varname> не изменяется, но будет
54 возвращен новый маршрут
55 (<classname>Zend_Controller_Router_Route_Chain</classname>), который
56 может быть передан маршрутизатору.