<?xml version="1.0" encoding="UTF-8"?>
    <!-- EN-Revision: 17592 -->
    <!-- Reviewed: no -->
<sect3 id="zend.controller.router.routes.hostname">
    <title>Zend_Controller_Router_Route_Hostname</title>

    <para>
        <classname>Zend_Controller_Router_Route_Hostname</classname>
        es la ruta
        del framework en el servidor. Funciona similarmente a la standard route,
        pero
        funciona con el nombre del host de la
        <acronym>URL</acronym>
        llamada, en lugar del path.
    </para>

    <para>
        Vamos a usar el ejemplo de la standard route y ver cómo se vería con
        un nombre basado en
        host. En lugar de llamar al usuario mediante un
        path, quisiéramos que un usuario pueda llamar
        a
        <filename>http://martel.users.example.com</filename>
        para ver la
        información acerca del usuario "martel".
    </para>

    <programlisting language="php"><![CDATA[
$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
    ':username.users.example.com',
    array(
        'controller' => 'profile',
        'action'     => 'userinfo'
    )
);

$plainPathRoute = new Zend_Controller_Router_Route_Static('');

$router->addRoute('user', $hostnameRoute->chain($plainPathRoute);
]]></programlisting>

    <para>
        El primer parámetro del constructor en
        <classname>Zend_Controller_Router_Route_Hostname</classname>
        es una
        definición de ruta que será comparada con el nombre del host. Las
        definiciones de ruta
        consisten en partes estáticas y dinámicas separadas
        por el carácter punto ('.'). Las partes
        dinámicas, llamadas variables,
        se marcan anteponiendo dos puntos (':') al nombre de la
        variable:
        <command>:username</command>
        . Las partes estáticas son
        simplemente texto:
        <command>user</command>
        .
    </para>

    <para>
        Las rutas del nombre del host pueden, pero nunca deben ser utilizadas
        así. La razón detrás de
        esto es que la ruta del nombre del host
        solamente, concordaría con cualquier path. Entonces,
        lo que tiene que
        hacer es encadenar una ruta del path a la ruta del nombre del host. Esto
        se
        hace como en el ejemplo llamando a
        <command>$hostnameRoute->chain($pathRoute);</command>
        .
        Haciendo esto,
        <varname>$hostnameRoute</varname>
        no se modifica,
        pero devuelve una nueva ruta
        (
        <classname>Zend_Controller_Router_Route_Chain</classname>
        ), que
        luego puede ser entregada al router.
    </para>
</sect3>
