initial translation in reference/yaf/

This commit is contained in:
leonardolara
2024-12-16 10:59:27 -03:00
parent 8f6ba68fe9
commit e80bdaa4f6
10 changed files with 1570 additions and 0 deletions

View File

@@ -0,0 +1,201 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4d17b7b4947e7819ff5036715dd706be87ae4def Maintainer: leonardolara Status: ready -->
<reference xml:id="class.yaf-dispatcher" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>A classe Yaf_Dispatcher</title>
<titleabbrev>Yaf_Dispatcher</titleabbrev>
<partintro>
<!-- {{{ Yaf_Dispatcher intro -->
<section xml:id="yaf-dispatcher.intro">
&reftitle.intro;
<para>
O objetivo de <classname>Yaf_Dispatcher</classname> é inicializar
o ambiente de requisição, rotear a requisição recebida e então despachar
quaisquer ações descobertas; ele agrega todas as respostas e as retorna
quando o processo é concluído.
</para>
<para>
<classname>Yaf_Dispatcher</classname> também implementa o padrão Singleton,
o que significa que apenas uma única instância dele pode estar disponível a qualquer momento. Isso
permite que ele também atue como um registro no qual os outros objetos no
processo de despacho podem recorrer.
</para>
</section>
<!-- }}} -->
<section xml:id="yaf-dispatcher.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>Yaf_Dispatcher</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<modifier>final</modifier>
<classname>Yaf_Dispatcher</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-dispatcher.props.router">_router</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-dispatcher.props.view">_view</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-dispatcher.props.request">_request</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-dispatcher.props.plugins">_plugins</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<modifier>static</modifier>
<varname linkend="yaf-dispatcher.props.instance">_instance</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-dispatcher.props.auto-render">_auto_render</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-dispatcher.props.return-response">_return_response</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-dispatcher.props.instantly-flush">_instantly_flush</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-dispatcher.props.default-module">_default_module</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-dispatcher.props.default-controller">_default_controller</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-dispatcher.props.default-action">_default_action</varname>
</fieldsynopsis>
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-dispatcher')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])" />
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-dispatcher')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
<!-- {{{ Yaf_Dispatcher properties -->
<section xml:id="yaf-dispatcher.props">
&reftitle.properties;
<variablelist>
<varlistentry xml:id="yaf-dispatcher.props.router">
<term><varname>_router</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-dispatcher.props.view">
<term><varname>_view</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-dispatcher.props.request">
<term><varname>_request</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-dispatcher.props.plugins">
<term><varname>_plugins</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-dispatcher.props.instance">
<term><varname>_instance</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-dispatcher.props.auto-render">
<term><varname>_auto_render</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-dispatcher.props.return-response">
<term><varname>_return_response</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-dispatcher.props.instantly-flush">
<term><varname>_instantly_flush</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-dispatcher.props.default-module">
<term><varname>_default_module</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-dispatcher.props.default-controller">
<term><varname>_default_controller</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-dispatcher.props.default-action">
<term><varname>_default_action</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
</variablelist>
</section>
<!-- }}} -->
</partintro>
&reference.yaf.entities.yaf-dispatcher;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,301 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4d17b7b4947e7819ff5036715dd706be87ae4def Maintainer: leonardolara Status: ready -->
<reference xml:id="class.yaf-loader" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>A classe Yaf_Loader</title>
<titleabbrev>Yaf_Loader</titleabbrev>
<partintro>
<!-- {{{ Yaf_Loader intro -->
<section xml:id="yaf-loader.intro">
&reftitle.intro;
<para>
<classname>Yaf_Loader</classname> introduz uma solução compreensiva de
carregamento automático para o Yaf.
</para>
<para>
Na primeira vez que uma instância de <classname>Yaf_Application</classname> for recuperada,
<classname>Yaf_Loader</classname> instanciará um singleton e se registrará com
spl_autoload. Uma instância é recuperada usando <methodname>Yaf_Loader::getInstance</methodname>.
</para>
<para>
<classname>Yaf_Loader</classname> tenta carregar uma classe em apenas uma tentativa.
Se falhar, dependerá de <link
linkend="ini.yaf.use-spl-autoload">yaf.use_spl_autoload</link>. Se esta
configuração estiver ativada, <methodname>Yaf_Loader::autoload</methodname> retornará
&false;, dando assim a chance para outra função de carregamento automático. Se estiver desligada
(por padrão), <methodname>Yaf_Loader::autoload</methodname> retornará
&true; e o mais importante é que um alerta será acionado
(muito útil para descobrir por que uma classe não pôde ser carregada).
<note>
<para>
A configuração yaf.use_spl_autoload deve ser mantida desativada, a menos que haja alguma biblioteca
com seu próprio mecanismo de carregamento automático e seja impossível reescrevê-lo.
</para>
</note>
</para>
<para>
Por padrão, <classname>Yaf_Loader</classname> assume que todas as bibliotecas (script
definido por classe) são armazenadas no <link linkend="ini.yaf.library">diretório de
biblioteca global</link>, que é definido no php.ini (yaf.library).
</para>
<para>
Se for desejado que o <classname>Yaf_Loader</classname> pesquise algumas
classes (bibliotecas) no <link linkend="yaf-loader.props.library">diretório de classes
local</link> (que é definido no application.ini e por padrão
é <link
linkend="configuration.yaf.directory">application.directory</link> . "/library"),
o prefixo da classe deve ser registrado usando
<methodname>Yaf_Loader::registerLocalNameSpace</methodname>.
</para>
<para>
Vejamos alguns exemplo (assumindo que APPLICATION_PATH seja <link
linkend="configuration.yaf.directory">application.directory</link>):
<example>
<title>Exemplo de configuração</title>
<programlisting role="shell">
<![CDATA[
// Assumindo a configuração a seguir no php.ini:
yaf.library = "/global_dir"
// Assumindo a configuração a seguir no application.ini
application.library = APPLICATION_PATH "/library"
]]>
</programlisting>
</example>
Supondo que o seguinte namespace local esteja registrado:
<example>
<title>Registrando namespace local</title>
<programlisting role="php">
<![CDATA[
<?php
class Bootstrap extends Yaf_Bootstrap_Abstract{
public function _initLoader($dispatcher) {
Yaf_Loader::getInstance()->registerLocalNameSpace(array("Foo", "Bar"));
}
?>
]]>
</programlisting>
</example>
A seguir, exemplos de carregamento automático:
<example>
<title>Exemplo de carregamento de classe</title>
<programlisting role="shell">
<![CDATA[
class Foo_Bar_Test =>
// APPLICATION_PATH/library/Foo/Bar/Test.php
class GLO_Name =>
// /global_dir/Glo/Name.php
class BarNon_Test
// /global_dir/Barnon/Test.php
]]>
</programlisting>
</example>
<example>
<title>Exemplo de carregamento de classe de namespace</title>
<programlisting role="shell">
<![CDATA[
class \Foo\Bar\Dummy =>
// APPLICATION_PATH/library/Foo/Bar/Dummy.php
class \FooBar\Bar\Dummy =>
// /global_dir/FooBar/Bar/Dummy.php
]]>
</programlisting>
</example>
</para>
<para>
Observe que todos os diretórios têm a primeira letra maiúscula. Eles podem ficar em letras
minúsculas definindo <link linkend="ini.yaf.lowcase-path">yaf.lowcase_path</link> para "On" no php.ini.
</para>
<para>
<classname>Yaf_Loader</classname> também é projetado para carregar as classes MVC,
e a regra é:
<example>
<title>Exemplo de carregamento de classes MVC</title>
<programlisting role="shell">
<![CDATA[
Controller Classes =>
// APPLICATION_PATH/controllers/
Model Classes =>
// APPLICATION_PATH/models/
Plugin Classes =>
// APPLICATION_PATH/plugins/
]]>
</programlisting>
</example>
Yaf identifica o sufixo de uma classe (isto é padrão, o sufixo
pode ser alterado pela configuração <link
linkend="ini.yaf.name-suffix">yaf.name_suffix</link>) para decidir se é
uma classe MVC:
<example>
<title>Distinções de classes MVC</title>
<programlisting role="shell">
<![CDATA[
Controller Classes =>
// ***Controller
Model Classes =>
// ***Model
Plugin Classes =>
// ***Plugin
]]>
</programlisting>
</example>
Alguns exemplos:
<example>
<title>Exemplo de carregamento MVC</title>
<programlisting role="shell">
<![CDATA[
class IndexController
// APPLICATION_PATH/controllers/Index.php
class DataModel =>
// APPLICATION_PATH/models/Data.php
class DummyPlugin =>
// APPLICATION_PATH/plugins/Dummy.php
class A_B_TestModel =>
// APPLICATION_PATH/models/A/B/Test.php
]]>
</programlisting>
</example>
<note>
<para>
A partir do Yaf 2.1.18, é oferecido suporte ao carregamento automático de controladores para o lado do script do usuário
(isto é, o carregamento automático é acionado pelo script PHP do usuário, por exemplo: acessar uma
propriedade estática do controlador no Bootstrap ou em Plugins),
mas o carregador automático apenas tenta localizar o script da classe do controlador sob o pasta
padrão do módulo, que é "APPLICATION_PATH/controllers/".
</para>
</note>
Além disso, o diretório será afetado por <link linkend="ini.yaf.lowcase-path">yaf.lowcase_path</link>.
</para>
</section>
<!-- }}} -->
<section xml:id="yaf-loader.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>Yaf_Loader</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>Yaf_Loader</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-loader.props.local-ns">_local_ns</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-loader.props.library">_library</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-loader.props.global-library">_global_library</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>static</modifier>
<varname linkend="yaf-loader.props.instance">_instance</varname>
</fieldsynopsis>
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-loader')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])" />
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-loader')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
<!-- {{{ Yaf_Loader properties -->
<section xml:id="yaf-loader.props">
&reftitle.properties;
<variablelist>
<varlistentry xml:id="yaf-loader.props.local-ns">
<term><varname>_local_ns</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-loader.props.library">
<term><varname>_library</varname></term>
<listitem>
<para>
Por padrão, este valor é <link
linkend="configuration.yaf.directory">application.directory</link> . "/library".
Ele pode ser alterado no application.ini (application.library) ou com uma chamada a
<methodname>Yaf_Loader::setLibraryPath</methodname>
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-loader.props.global-library">
<term><varname>_global_library</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-loader.props.instance">
<term><varname>_instance</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
</variablelist>
</section>
<!-- }}} -->
</partintro>
&reference.yaf.entities.yaf-loader;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,153 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4d17b7b4947e7819ff5036715dd706be87ae4def Maintainer: leonardolara Status: ready -->
<reference xml:id="class.yaf-plugin-abstract" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>A classe Yaf_Plugin_Abstract</title>
<titleabbrev>Yaf_Plugin_Abstract</titleabbrev>
<partintro>
<!-- {{{ Yaf_Plugin_Abstract intro -->
<section xml:id="yaf-plugin-abstract.intro">
&reftitle.intro;
<para>
Os plugins permitem fácil extensibilidade e personalização da estrutura.
</para>
<para>
Plugins são classes. A definição real da classe irá variar de acordo com o
componente - pode ser necessário implementar esta interface, mas o fato
é que o próprio plugin é uma classe.
</para>
<para>
Um plugin pode ser carregado no Yaf usando
<methodname>Yaf_Dispatcher::registerPlugin</methodname>. Após
o registro, todos os métodos que o plugin implementou de acordo com esta
interface serão chamados no momento apropriado.
</para>
</section>
<!-- }}} -->
<section role="examples">
&reftitle.examples;
<example>
<title>Exemplo de plugin</title>
<programlisting role="php">
<![CDATA[
<?php
/* A classe Bootstrap deve ser definida em ./application/Bootstrap.php */
class Bootstrap extends Yaf_Bootstrap_Abstract {
public function _initPlugin(Yaf_Dispatcher $dispatcher) {
/* registrar um plugin */
$dispatcher->registerPlugin(new TestPlugin());
}
}
/* a classe do plugin deve ser colocada em ./application/plugins/ */
class TestPlugin extends Yaf_Plugin_Abstract {
public function routerStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
/* Antes do roteamento.
Neste gancho, o usuário pode reescrever o URL. */
var_dump("routerStartup");
}
public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
/* Roteamento completo.
Neste gancho, o usuário pode verificar o login. */
var_dump("routerShutdown");
}
public function dispatchLoopStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
var_dump("dispatchLoopStartup");
}
public function preDispatch(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
var_dump("preDispatch");
}
public function postDispatch(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
var_dump("postDispatch");
}
public function dispatchLoopShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
/* Gancho final.
Neste gancho o usuário pode fazer log ou implementar layout. */
var_dump("dispatchLoopShutdown");
}
}
Class IndexController extends Yaf_Controller_Abstract {
public function indexAction() {
return FALSE; // evita a renderização
}
}
$config = array(
"application" => array(
"directory" => dirname(__FILE__) . "/application/",
),
);
$app = new Yaf_Application($config);
$app->bootstrap()->run();
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
string(13) "routerStartup"
string(14) "routerShutdown"
string(19) "dispatchLoopStartup"
string(11) "preDispatch"
string(12) "postDispatch"
string(20) "dispatchLoopShutdown"
]]>
</screen>
</example>
</section>
<section xml:id="yaf-plugin-abstract.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>Yaf_Plugin_Abstract</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>Yaf_Plugin_Abstract</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-plugin-abstract')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
</partintro>
&reference.yaf.entities.yaf-plugin-abstract;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4d17b7b4947e7819ff5036715dd706be87ae4def Maintainer: leonardolara Status: ready -->
<reference xml:id="class.yaf-registry" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>A classe Yaf_Registry</title>
<titleabbrev>Yaf_Registry</titleabbrev>
<partintro>
<!-- {{{ Yaf_Registry intro -->
<section xml:id="yaf-registry.intro">
&reftitle.intro;
<para>
Todos os métodos de <classname>Yaf_Registry</classname> são declarados como estáticos, tornando-o
universalmente acessível. Isso fornece a capacidade de obter ou definir quaisquer dados
personalizados de qualquer maneira no código, conforme necessário.
</para>
</section>
<!-- }}} -->
<section xml:id="yaf-registry.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>Yaf_Registry</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>Yaf_Registry</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>
<fieldsynopsis>
<modifier>static</modifier>
<varname linkend="yaf-registry.props.instance">_instance</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-registry.props.entries">_entries</varname>
</fieldsynopsis>
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-registry')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])" />
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-registry')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
<!-- {{{ Yaf_Registry properties -->
<section xml:id="yaf-registry.props">
&reftitle.properties;
<variablelist>
<varlistentry xml:id="yaf-registry.props.instance">
<term><varname>_instance</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-registry.props.entries">
<term><varname>_entries</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
</variablelist>
</section>
<!-- }}} -->
</partintro>
&reference.yaf.entities.yaf-registry;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4d17b7b4947e7819ff5036715dd706be87ae4def Maintainer: leonardolara Status: ready -->
<reference xml:id="class.yaf-request-http" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>A classe Yaf_Request_Http</title>
<titleabbrev>Yaf_Request_Http</titleabbrev>
<partintro>
<!-- {{{ Yaf_Request_Http intro -->
<section xml:id="yaf-request-http.intro">
&reftitle.intro;
<para>
Qualquer requisição de cliente é inicializada como um
<classname>Yaf_Request_Http</classname>.
Os métodos desta classe permitem obter informações da requisição como
consulta do URI e parâmetros POST.
<note>
<para>
Por segurança, $_GET e $_POST são somente-leitura no Yaf, ou seja,
se for definido um valor para estas variáveis globais, ele não poderá ser obtido por
<methodname>Yaf_Request_Http::getQuery</methodname> ou
<methodname>Yaf_Request_Http::getPost</methodname>.
</para>
<para>
Porém, existem usos que demandam este recurso, como os testes de unidade. Por isso,
o Yaf pode ser compilado com --enable-yaf-debug, que permite que o Yaf leia os
valores definidos pelo usuário via script.
</para>
<para>
Neste caso, o Yaf emitirá um alerta E_STRICT para lembrar sobre
isso: "Strict Standards: you are running yaf in debug mode".
</para>
</note>
</para>
</section>
<!-- }}} -->
<section xml:id="yaf-request-http.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>Yaf_Request_Http</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>Yaf_Request_Http</classname>
</ooclass>
<ooclass>
<modifier>extends</modifier>
<classname>Yaf_Request_Abstract</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-request-http')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])" />
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-request-http')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
<classsynopsisinfo role="comment">&InheritedMethods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-request-abstract')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
<!-- {{{ Yaf_Request_Http properties -->
<section xml:id="yaf-request-http.props">
&reftitle.properties;
<variablelist>
<varlistentry xml:id="yaf-request-http.props.module">
<term><varname>module</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-request-http.props.controller">
<term><varname>controller</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-request-http.props.action">
<term><varname>action</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-request-http.props.method">
<term><varname>method</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-request-http.props.params">
<term><varname>params</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-request-http.props.language">
<term><varname>language</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-request-http.props.exception">
<term><varname>_exception</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-request-http.props.base-uri">
<term><varname>_base_uri</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-request-http.props.uri">
<term><varname>uri</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-request-http.props.dispatched">
<term><varname>dispatched</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-request-http.props.routed">
<term><varname>routed</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
</variablelist>
</section>
<!-- }}} -->
</partintro>
&reference.yaf.entities.yaf-request-http;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4d17b7b4947e7819ff5036715dd706be87ae4def Maintainer: leonardolara Status: ready -->
<reference xml:id="class.yaf-route-map" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>A classe Yaf_Route_Map</title>
<titleabbrev>Yaf_Route_Map</titleabbrev>
<partintro>
<!-- {{{ Yaf_Route_Map intro -->
<section xml:id="yaf-route-map.intro">
&reftitle.intro;
<para>
<classname>Yaf_Route_Map</classname> é uma rota incluída no Yaf. Ela simplesmente
converte um ponto terminal de URI (aquela parte do URI que vem depois da
base: veja <methodname>Yaf_Request_Abstract::setBaseUri</methodname>)
em um nome de controlador nome ou nome de ação (depende do parâmetro passado para
<methodname>Yaf_Route_Map::__construct</methodname>), com a seguinte regra:
A => controlador A.
A/B/C => controlador A_B_C.
A/B/C/D/E => controlador A_B_C_D_E.
</para>
<para>
Se o segundo parâmetro de
<methodname>Yaf_Route_Map::__construct</methodname> for especificado,
apenas a parte antes do delimitador do URI será usada no encaminhamento, a parte posterior
será usada como parâmetros da requisição do encaminhamento (consulte a seção de exemplos de
<methodname>Yaf_Route_Map::__construct</methodname>).
</para>
</section>
<!-- }}} -->
<section xml:id="yaf-route-map.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>Yaf_Route_Map</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>Yaf_Route_Map</classname>
</ooclass>
<oointerface>
<interfacename>Yaf_Route_Interface</interfacename>
</oointerface>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-route-map.props.ctl-router">_ctl_router</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-route-map.props.delimiter">_delimiter</varname>
</fieldsynopsis>
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-route-map')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])" />
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-route-map')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
<!-- {{{ Yaf_Route_Map properties -->
<section xml:id="yaf-route-map.props">
&reftitle.properties;
<variablelist>
<varlistentry xml:id="yaf-route-map.props.ctl-router">
<term><varname>_ctl_router</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-route-map.props.delimiter">
<term><varname>_delimiter</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
</variablelist>
</section>
<!-- }}} -->
</partintro>
&reference.yaf.entities.yaf-route-map;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4d17b7b4947e7819ff5036715dd706be87ae4def Maintainer: leonardolara Status: ready -->
<reference xml:id="class.yaf-route-simple" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>A classe Yaf_Route_Simple</title>
<titleabbrev>Yaf_Route_Simple</titleabbrev>
<partintro>
<!-- {{{ Yaf_Route_Simple intro -->
<section xml:id="yaf-route-simple.intro">
&reftitle.intro;
<para>
<classname>Yaf_Route_Simple</classname> procurará a correspondência à string da consulta e
encontrará a informação de rota.
</para>
<para>
Tudo que é necessário fazer é informar ao <classname>Yaf_Route_Simple</classname> qual chave de $_GET é
o módulo, qual chave é o controlador e qual chave é a ação.
</para>
<para>
<methodname>Yaf_Route_Simple::route</methodname> sempre retorna
&true;,
por isso é importante incluir <classname>Yaf_Route_Simple</classname> na frente da pilha de rotas,
caso contrário todas as outras rotas não serão chamadas.
</para>
</section>
<!-- }}} -->
<section xml:id="yaf-route-simple.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>Yaf_Route_Simple</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>Yaf_Route_Simple</classname>
</ooclass>
<oointerface>
<interfacename>Yaf_Route_Interface</interfacename>
</oointerface>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-route-simple.props.controller">controller</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-route-simple.props.module">module</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-route-simple.props.action">action</varname>
</fieldsynopsis>
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-route-simple')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])" />
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-route-simple')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
<!-- {{{ Yaf_Route_Simple properties -->
<section xml:id="yaf-route-simple.props">
&reftitle.properties;
<variablelist>
<varlistentry xml:id="yaf-route-simple.props.controller">
<term><varname>controller</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-route-simple.props.module">
<term><varname>module</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-route-simple.props.action">
<term><varname>action</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
</variablelist>
</section>
<!-- }}} -->
</partintro>
&reference.yaf.entities.yaf-route-simple;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4d17b7b4947e7819ff5036715dd706be87ae4def Maintainer: leonardolara Status: ready -->
<reference xml:id="class.yaf-route-static" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>A classe Yaf_Route_Static</title>
<titleabbrev>Yaf_Route_Static</titleabbrev>
<partintro>
<!-- {{{ Yaf_Route_Static intro -->
<section xml:id="yaf-route-static.intro">
&reftitle.intro;
<para>
Por padrão, <classname>Yaf_Router</classname> tem apenas uma
<classname>Yaf_Route_Static</classname> como sua rota padrão.
</para>
<para>
<classname>Yaf_Route_Static</classname> é projetada para suportar o
requisito de 80%.
</para>
<para>
Observe que é desnecessário instanciar uma <classname>Yaf_Route_Static</classname>
ou adicioná-la à pilha de rotas do <classname>Yaf_Router</classname>,
pois sempre haverá uma na pilha do<classname>Yaf_Router</classname>
e ela sempre será chamada por último.
</para>
</section>
<!-- }}} -->
<section xml:id="yaf-route-static.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>Yaf_Route_Static</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>Yaf_Route_Static</classname>
</ooclass>
<oointerface>
<interfacename>Yaf_Router</interfacename>
</oointerface>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-route-static')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
</partintro>
&reference.yaf.entities.yaf-route-static;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,242 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4d17b7b4947e7819ff5036715dd706be87ae4def Maintainer: leonardolara Status: ready -->
<reference xml:id="class.yaf-router" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>A classe Yaf_Router</title>
<titleabbrev>Yaf_Router</titleabbrev>
<partintro>
<!-- {{{ Yaf_Router intro -->
<section xml:id="yaf-router.intro">
&reftitle.intro;
<para>
<classname>Yaf_Router</classname> é o roteador padrão da extensão. Roteamento é
o processo de pegar um ponto de extremidade de URI (aquela parte do URI que vem
depois da base: veja <methodname>Yaf_Request_Abstract::setBaseUri</methodname>)
e decompô-lo em parâmetros para determinar qual módulo, controlador e
ação desse controlador deve receber a requisição. Esses valores de módulo,
controlador, ação e outros parâmetros são empacotados em um
objeto <classname>Yaf_Request_Abstract</classname> que é então processado por
<classname>Yaf_Dispatcher</classname>. O roteamento ocorre apenas uma vez: quando a requisição
é recebida inicialmente e antes do primeiro controlador ser despachado.
<classname>Yaf_Router</classname> foi projetado para permitir funcionalidades
semelhantes a mod_rewrite usando estruturas PHP puras. É vagamente baseado no
roteamento Ruby on Rails e não requer nenhum conhecimento prévio de reescrita
de URL de servidor web. Ele foi projetado para funcionar com uma única regra mod_rewrite
do Apache (uma destas):
<example>
<title>Regra de re-escrita para Apache</title>
<programlisting role="conf">
<![CDATA[
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css|html)$ index.php
]]>
</programlisting>
</example>
ou (preferível):
<example>
<title>Regra de re-escrita para Apache</title>
<programlisting role="conf">
<![CDATA[
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
]]>
</programlisting>
</example>
Se o Lighttpd for usado, a seguinte regra de re-escrita é válida:
<example>
<title>Regra de re-escrita para Lighttpd</title>
<programlisting role="conf">
<![CDATA[
url.rewrite-once = (
".*\?(.*)$" => "/index.php?$1",
".*\.(js|ico|gif|jpg|png|css|html)$" => "$0",
"" => "/index.php"
)
]]>
</programlisting>
</example>
Se o Nginx for usado, use a seguinte regra de re-escrita:
<example>
<title>Regra de re-escrita para Nginx</title>
<programlisting role="conf">
<![CDATA[
server {
listen ****;
server_name yourdomain.com;
root document_root;
index index.php index.html;
if (!-e $request_filename) {
rewrite ^/(.*) /index.php/$1 last;
}
}
]]>
</programlisting>
</example>
</para>
</section>
<!-- }}} -->
<section xml:id="yaf-router.default">
<title>Rota padrão</title>
<para>
<classname>Yaf_Router</classname> vem pré-configurado com uma rota padrão
<classname>Yaf_Route_Static</classname>, que corresponderá aos URIs no formato
de controlador/ação. Além disso, um nome de módulo pode ser especificado como o primeiro
elemento do caminho, permitindo URIs no formato módulo/controlador/ação. Por fim,
também corresponderá a quaisquer parâmetros adicionais anexados ao URI por padrão
- controlador/ação/var1/valor1/var2/valor2.
<note>
<para>
O nome do módulo deve ser definido na configuração, considerando application.module="Index,Foo,Bar".
Neste caso apenas Index, Foo e Bar podem ser considerados como nome do módulo.
Caso não seja configurado, existirá apenas um módulo chamado "Index".
</para>
</note>
</para>
<para>
Alguns exemplos de como essas rotas são correspondidas:
<example>
<title>Exemplo de <classname>Yaf_Route_Static</classname> (rota padrão)</title>
<programlisting role="conf">
<![CDATA[
// Assumindo a seguinte configuração:
$conf = array(
"application" => array(
"modules" => "Index,Blog",
),
);
Apenas controlador:
http://examplo/noticias
controlador == noticias
Apenas ação (quando definido yaf.action_prefer=1 no php.ini)
ação == noticias
Módulo inválido é mapeado para nome de controlador:
http://example/foo
controlador == foo
Módulo + controlador:
http://example/blog/arquivo
module == blog
controlador == arquivo
Módulo + controlado + ação:
http://example/blog/arquivo/lista
module == blog
controlador == arquivo
ação == lista
Módulo + controlado + ação + parâmetros:
http://example/blog/archive/lista/ordem/alfa/data/decres
module == blog
controlador == archive
ação == lista
ordem == alfa
data == decres
]]>
</programlisting>
</example>
</para>
</section>
<section xml:id="yaf-router.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>Yaf_Router</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>Yaf_Router</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-router.props.routes">_routes</varname>
</fieldsynopsis>
<fieldsynopsis>
<modifier>protected</modifier>
<varname linkend="yaf-router.props.current">_current</varname>
</fieldsynopsis>
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-router')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])" />
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-router')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
<!-- {{{ Yaf_Router properties -->
<section xml:id="yaf-router.props">
&reftitle.properties;
<variablelist>
<varlistentry xml:id="yaf-router.props.routes">
<term><varname>_routes</varname></term>
<listitem>
<para>
registered routes stack
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-router.props.current">
<term><varname>_current</varname></term>
<listitem>
<para>
after routing phase, this indicated the name of which route
is used to route current request.
you can get this name by
<methodname>Yaf_Router::getCurrentRoute</methodname>.
</para>
</listitem>
</varlistentry>
</variablelist>
</section>
<!-- }}} -->
</partintro>
&reference.yaf.entities.yaf-router;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4d17b7b4947e7819ff5036715dd706be87ae4def Maintainer: leonardolara Status: ready -->
<reference xml:id="class.yaf-view-interface" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>A classe Yaf_View_Interface</title>
<titleabbrev>Yaf_View_Interface</titleabbrev>
<partintro>
<!-- {{{ Yaf_View_Interface intro -->
<section xml:id="yaf-view-interface.intro">
&reftitle.intro;
<para>
Yaf fornece aos desenvolvedores a capacidade de usar um mecanismo de visualização personalizado em vez
do mecanismo incluído que é <classname>Yaf_View_Simple</classname>. Há
um exemplo para explicar como isto é feito. Consulte
<methodname>Yaf_Dispatcher::setView</methodname>.
</para>
</section>
<!-- }}} -->
<section xml:id="yaf-view-interface.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>Yaf_View_Interface</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>Yaf_View_Interface</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-view-interface')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
</partintro>
&reference.yaf.entities.yaf-view-interface;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->