Nette Documentation Preview

syntax
Glosario de términos
********************


AJAX .[#toc-ajax]
-----------------
Asynchronous JavaScript and XML - tecnología para la comunicación cliente-servidor a través del protocolo HTTP sin necesidad de recargar toda la página en cada petición. A pesar de las siglas, a menudo se utiliza el formato [JSON |#JSON] en lugar de XML.


Acción del presentador .[#toc-presenter-action]
-----------------------------------------------
Parte lógica del [presentador |#presenter] que realiza una acción, como mostrar una página de producto, dar de baja a un usuario, etc. Un presentador puede tener más acciones.


BOM
---
La llamada *máscara de orden de bytes* es un primer carácter especial de un archivo e indica el orden de bytes en la codificación. Algunos editores la incluyen automáticamente, es prácticamente invisible, pero causa problemas con las cabeceras y el envío de salida desde dentro de PHP. Puede usar [Code Checker |code-checker:] para su eliminación masiva.


Controlador .[#toc-controller]
------------------------------
El controlador procesa las peticiones del usuario y en base a ellas llama a la lógica particular de la aplicación (ej. [modelo |#model]), luego llama a [la vista |#view] para la representación de los datos. Una analogía de los controladores son [los presentadores |#presenter] en Nette Framework.


Cross-Site Scripting (XSS) .[#toc-cross-site-scripting-xss]
-----------------------------------------------------------
Cross-Site Scripting es un método de perturbación de sitios que utiliza entradas no descifradas. Un atacante puede inyectar su propio código HTML o JavaScript y cambiar el aspecto de la página o incluso recopilar información sensible sobre los usuarios. La protección contra el XSS es sencilla: escape coherente y correcto de todas las cadenas y entradas.

Nette Framework viene con una nueva tecnología de [Context-Aware Escaping |latte:safety-first#context-aware-escaping], que le librará de los riesgos de Cross-Site Scripting para siempre. Escapa todas las entradas automáticamente basándose en un contexto dado, por lo que es imposible que un programador olvide algo accidentalmente.


Falsificación de petición en sitios cruzados (CSRF) .[#toc-cross-site-request-forgery-csrf]
-------------------------------------------------------------------------------------------
Un ataque Cross-Site Request Forgery consiste en que el atacante atrae a la víctima para que visite una página que ejecuta silenciosamente una petición en el navegador de la víctima al servidor donde la víctima está conectada en ese momento, y el servidor cree que la petición ha sido realizada por la víctima a voluntad. El servidor realiza una determinada acción bajo la identidad de la víctima pero sin que ésta se dé cuenta. Puede ser cambiar o borrar datos, enviar un mensaje, etc.

Nette Framework **protege automáticamente los formularios y señales de los presentadores** de este tipo de ataques. Esto se hace impidiendo que sean enviados o llamados desde otro dominio.


Inyección de dependencia .[#toc-dependency-injection]
-----------------------------------------------------
La inyección de dependencias (DI) es un patrón de diseño que indica cómo separar la creación de objetos de sus dependencias. Es decir, una clase no es responsable de crear o inicializar sus dependencias, sino que éstas son proporcionadas por código externo (que puede incluir un [contenedor DI |#Dependency Injection container]). La ventaja es que permite una mayor flexibilidad del código, una mejor legibilidad y una comprobación más sencilla de la aplicación, ya que las dependencias son fácilmente reemplazables y están aisladas de otras partes del código. Para más información, consulte [¿Qué es la inyección de dependencias? |dependency-injection:introduction]


Contenedor de inyección de dependencias .[#toc-dependency-injection-container]
------------------------------------------------------------------------------
Un contenedor de Inyección de Dependencias (también contenedor DI o contenedor IoC) es una herramienta que se encarga de la creación y gestión de dependencias en una aplicación (o [servicios |#service]). Un contenedor suele tener una configuración que define qué clases dependen de otras clases, qué implementaciones específicas de dependencias utilizar y cómo crear esas dependencias. A continuación, el contenedor crea estos objetos y los proporciona a las clases que los necesitan. Para obtener más información, consulte [¿Qué es un contenedor DI? |dependency-injection:container]


Escapando de .[#toc-escaping]
-----------------------------
El escape es la conversión de caracteres con un significado especial en un contexto determinado en otras secuencias equivalentes. Ejemplo: Queremos escribir comillas en una cadena entrecomillada. Como las comillas tienen un significado especial en el contexto de la cadena entrecomillada, es necesario utilizar otra secuencia equivalente. La secuencia concreta viene determinada por las reglas del contexto (por ejemplo, `\"` en la cadena entrecomillada de PHP, `"` en los atributos HTML, etc.).


Filtro (antes Helper) .[#toc-filter-formerly-helper]
----------------------------------------------------
Función de filtro. En las plantillas, el [filtro |latte:syntax#filters] es una función que ayuda a alterar o formatear los datos de salida. Las plantillas tienen varios [filtros estándar |latte:filters] predefinidos.


Invalidación .[#toc-invalidation]
---------------------------------
Aviso de un [fragmento |#snippet] para volver a renderizar. En otro contexto también borrado de una caché.


JSON .[#toc-json]
-----------------
Formato de intercambio de datos basado en la sintaxis de JavaScript (es su subconjunto). La especificación exacta puede encontrarse en www.json.org.


Componente .[#toc-component]
----------------------------
Parte reutilizable de una aplicación. Puede ser una parte visual de una página, como se describe en el capítulo [application:components], o el término también puede referirse a la clase [Component |component-model:] (dicho componente no tiene por qué ser visual).


Caracteres de control .[#toc-control-characters]
------------------------------------------------
Los caracteres de control son caracteres invisibles que pueden aparecer en un texto y causar problemas. Para su eliminación masiva de archivos, puede usar [Code Checker |code-checker:], para su eliminación de una variable use la función [Strings::normalize() |utils:strings#normalize].


Eventos .[#toc-events]
----------------------
Un evento es una situación esperada en el objeto, que cuando se produce, se llama a los llamados manejadores, es decir, callbacks que reaccionan al evento ("muestra":https://gist.github.com/dg/332cdd51bdf7d66a6d8003b134508a38). El evento puede ser, por ejemplo, el envío de un formulario, el inicio de sesión de un usuario, etc. Los eventos son, por tanto, una forma de *Inversión de Control*.

Por ejemplo, un inicio de sesión de usuario se produce en el método `Nette\Security\User::login()`. El objeto `User` tiene una variable pública `$onLoggedIn`, que es una matriz a la que cualquiera puede añadir una llamada de retorno. En cuanto el usuario inicia sesión, el método `login()` llama a todas las retrollamadas de la matriz. El nombre de una variable de la forma `onXyz` es una convención utilizada en todo Nette.


Latte .[#toc-latte]
-------------------
Uno de los [sistemas de plantillas |latte:] más innovadores de la historia.


Modelo .[#toc-model]
--------------------
El modelo representa la base de datos y funciones de toda la aplicación. Incluye toda la lógica de la aplicación (a veces también denominada "lógica de negocio"). Es el **M** de **M**VC o MPV. Cualquier acción del usuario (iniciar sesión, poner algo en la cesta, cambiar un valor de la base de datos) representa una acción del modelo.

El modelo gestiona su estado interno y proporciona una interfaz pública. Llamando a esta interfaz podemos tomar o cambiar su estado. El modelo no sabe de la existencia de una [vista |#view] o [controlador |#controller], el modelo es totalmente independiente de ellos.


Modelo-Vista-Controlador .[#toc-model-view-controller]
------------------------------------------------------
Arquitectura de software, que surgió en el desarrollo de aplicaciones GUI para separar el código para el control de flujo ([controlador |#controller]) del código de la lógica de la aplicación ([modelo |#model]) y del código de representación de datos ([vista |#view]). De esta forma el código es más comprensible, facilita el desarrollo futuro y permite probar las partes por separado.


Modelo-Vista-Presentador .[#toc-model-view-presenter]
-----------------------------------------------------
Arquitectura basada en [Modelo-Vista-Controlador |#Model-View-Controller].


Módulo .[#toc-module]
---------------------
[Módulo |application:modules] en Nette Framework representa una colección de presentadores y plantillas, eventualmente también componentes y modelos, que sirven datos a un presentador. Así que es cierta parte lógica de una aplicación.

Por ejemplo, una e-shop puede tener tres módulos:
1) Catálogo de productos con cesta.
2) Administración para el cliente.
3) Administración para el comerciante.


Espacio de nombres .[#toc-namespace]
------------------------------------
Namespace es una característica del lenguaje PHP desde su versión 5.3 y de algunos otros lenguajes de programación también. Ayuda a evitar colisiones de nombres (por ejemplo, dos clases con el mismo nombre) cuando se utilizan diferentes bibliotecas juntas. Consulte [la documentación de |https://www.php.net/manual/en/language.namespaces.rationale.php] PHP para más detalles.


Presentador .[#toc-presenter]
-----------------------------
Presentador es un objeto, que toma la [petición |api:Nette\Application\Request] tal y como la traduce el enrutador desde la petición HTTP y genera una [respuesta |api:Nette\Application\Response]. La respuesta puede ser una página HTML, una imagen, un documento XML, un archivo, JSON, una redirección o lo que se te ocurra.

Por presentador suele entenderse un descendiente de la clase [api:Nette\Application\UI\Presenter]. Por peticiones ejecuta las [acciones |application:presenters#life-cycle-of-presenter] apropiadas y renderiza las plantillas.


Enrutador .[#toc-router]
------------------------
Traductor bidireccional entre la solicitud HTTP / URL y la acción del presentador. Bidireccional significa que no sólo es posible derivar una acción [del |#presenter action] presentador a partir de la solicitud HTTP, sino también generar la URL adecuada para una acción. Ver más en el capítulo sobre [enrutamiento URL |application:routing].


Cookie SameSite .[#toc-samesite-cookie]
---------------------------------------
Las cookies SameSite proporcionan un mecanismo para reconocer qué condujo a la carga de la página. Puede tener tres valores: `Lax`, `Strict` y `None` (este último requiere HTTPS). Si la solicitud de la página procede directamente del sitio o el usuario abre la página escribiendo directamente en la barra de direcciones o haciendo clic en un marcador, el navegador envía todas las cookies al servidor (es decir, con los indicadores `Lax`, `Strict` y `None`). Si el usuario hace clic en el sitio a través de un enlace desde otro sitio, las cookies con las banderas `Lax` y `None` se pasan al servidor. Si la solicitud se realiza por otros medios, como el envío de un formulario POST desde otro sitio, la carga dentro de un iframe, el uso de JavaScript, etc., sólo se envían cookies con la bandera `None`.


Servicio .[#toc-service]
------------------------
En el contexto de la inyección de dependencias, un servicio se refiere a un objeto creado y gestionado por un contenedor DI. Un servicio puede ser fácilmente reemplazado por otra implementación, por ejemplo para propósitos de prueba o para cambiar el comportamiento de una aplicación, sin tener que modificar el código que utiliza el servicio.


Fragmento .[#toc-snippet]
-------------------------
Fragmento de una página que se puede volver a renderizar por separado durante una solicitud [AJAX |#AJAX].


Ver .[#toc-view]
----------------
La vista es una capa de la aplicación, que es responsable de renderizar los resultados de la petición. Usualmente utiliza un sistema de plantillas y sabe, como renderizar sus componentes o resultados tomados del modelo.



{{leftbar: www:@menu-common}}
{{priority: -2}}

Glosario de términos

AJAX

Asynchronous JavaScript and XML – tecnología para la comunicación cliente-servidor a través del protocolo HTTP sin necesidad de recargar toda la página en cada petición. A pesar de las siglas, a menudo se utiliza el formato JSON en lugar de XML.

Acción del presentador

Parte lógica del presentador que realiza una acción, como mostrar una página de producto, dar de baja a un usuario, etc. Un presentador puede tener más acciones.

BOM

La llamada máscara de orden de bytes es un primer carácter especial de un archivo e indica el orden de bytes en la codificación. Algunos editores la incluyen automáticamente, es prácticamente invisible, pero causa problemas con las cabeceras y el envío de salida desde dentro de PHP. Puede usar Code Checker para su eliminación masiva.

Controlador

El controlador procesa las peticiones del usuario y en base a ellas llama a la lógica particular de la aplicación (ej. modelo), luego llama a la vista para la representación de los datos. Una analogía de los controladores son los presentadores en Nette Framework.

Cross-Site Scripting (XSS)

Cross-Site Scripting es un método de perturbación de sitios que utiliza entradas no descifradas. Un atacante puede inyectar su propio código HTML o JavaScript y cambiar el aspecto de la página o incluso recopilar información sensible sobre los usuarios. La protección contra el XSS es sencilla: escape coherente y correcto de todas las cadenas y entradas.

Nette Framework viene con una nueva tecnología de Context-Aware Escaping, que le librará de los riesgos de Cross-Site Scripting para siempre. Escapa todas las entradas automáticamente basándose en un contexto dado, por lo que es imposible que un programador olvide algo accidentalmente.

Falsificación de petición en sitios cruzados (CSRF)

Un ataque Cross-Site Request Forgery consiste en que el atacante atrae a la víctima para que visite una página que ejecuta silenciosamente una petición en el navegador de la víctima al servidor donde la víctima está conectada en ese momento, y el servidor cree que la petición ha sido realizada por la víctima a voluntad. El servidor realiza una determinada acción bajo la identidad de la víctima pero sin que ésta se dé cuenta. Puede ser cambiar o borrar datos, enviar un mensaje, etc.

Nette Framework protege automáticamente los formularios y señales de los presentadores de este tipo de ataques. Esto se hace impidiendo que sean enviados o llamados desde otro dominio.

Inyección de dependencia

La inyección de dependencias (DI) es un patrón de diseño que indica cómo separar la creación de objetos de sus dependencias. Es decir, una clase no es responsable de crear o inicializar sus dependencias, sino que éstas son proporcionadas por código externo (que puede incluir un contenedor DI). La ventaja es que permite una mayor flexibilidad del código, una mejor legibilidad y una comprobación más sencilla de la aplicación, ya que las dependencias son fácilmente reemplazables y están aisladas de otras partes del código. Para más información, consulte ¿Qué es la inyección de dependencias?

Contenedor de inyección de dependencias

Un contenedor de Inyección de Dependencias (también contenedor DI o contenedor IoC) es una herramienta que se encarga de la creación y gestión de dependencias en una aplicación (o servicios). Un contenedor suele tener una configuración que define qué clases dependen de otras clases, qué implementaciones específicas de dependencias utilizar y cómo crear esas dependencias. A continuación, el contenedor crea estos objetos y los proporciona a las clases que los necesitan. Para obtener más información, consulte ¿Qué es un contenedor DI?

Escapando de

El escape es la conversión de caracteres con un significado especial en un contexto determinado en otras secuencias equivalentes. Ejemplo: Queremos escribir comillas en una cadena entrecomillada. Como las comillas tienen un significado especial en el contexto de la cadena entrecomillada, es necesario utilizar otra secuencia equivalente. La secuencia concreta viene determinada por las reglas del contexto (por ejemplo, \" en la cadena entrecomillada de PHP, " en los atributos HTML, etc.).

Filtro (antes Helper)

Función de filtro. En las plantillas, el filtro es una función que ayuda a alterar o formatear los datos de salida. Las plantillas tienen varios filtros estándar predefinidos.

Invalidación

Aviso de un fragmento para volver a renderizar. En otro contexto también borrado de una caché.

JSON

Formato de intercambio de datos basado en la sintaxis de JavaScript (es su subconjunto). La especificación exacta puede encontrarse en www.json.org.

Componente

Parte reutilizable de una aplicación. Puede ser una parte visual de una página, como se describe en el capítulo components, o el término también puede referirse a la clase Component (dicho componente no tiene por qué ser visual).

Caracteres de control

Los caracteres de control son caracteres invisibles que pueden aparecer en un texto y causar problemas. Para su eliminación masiva de archivos, puede usar Code Checker, para su eliminación de una variable use la función Strings::normalize().

Eventos

Un evento es una situación esperada en el objeto, que cuando se produce, se llama a los llamados manejadores, es decir, callbacks que reaccionan al evento (muestra). El evento puede ser, por ejemplo, el envío de un formulario, el inicio de sesión de un usuario, etc. Los eventos son, por tanto, una forma de Inversión de Control.

Por ejemplo, un inicio de sesión de usuario se produce en el método Nette\Security\User::login(). El objeto User tiene una variable pública $onLoggedIn, que es una matriz a la que cualquiera puede añadir una llamada de retorno. En cuanto el usuario inicia sesión, el método login() llama a todas las retrollamadas de la matriz. El nombre de una variable de la forma onXyz es una convención utilizada en todo Nette.

Latte

Uno de los sistemas de plantillas más innovadores de la historia.

Modelo

El modelo representa la base de datos y funciones de toda la aplicación. Incluye toda la lógica de la aplicación (a veces también denominada „lógica de negocio“). Es el M de MVC o MPV. Cualquier acción del usuario (iniciar sesión, poner algo en la cesta, cambiar un valor de la base de datos) representa una acción del modelo.

El modelo gestiona su estado interno y proporciona una interfaz pública. Llamando a esta interfaz podemos tomar o cambiar su estado. El modelo no sabe de la existencia de una vistacontrolador, el modelo es totalmente independiente de ellos.

Modelo-Vista-Controlador

Arquitectura de software, que surgió en el desarrollo de aplicaciones GUI para separar el código para el control de flujo (controlador) del código de la lógica de la aplicación (modelo) y del código de representación de datos (vista). De esta forma el código es más comprensible, facilita el desarrollo futuro y permite probar las partes por separado.

Modelo-Vista-Presentador

Arquitectura basada en Modelo-Vista-Controlador.

Módulo

Módulo en Nette Framework representa una colección de presentadores y plantillas, eventualmente también componentes y modelos, que sirven datos a un presentador. Así que es cierta parte lógica de una aplicación.

Por ejemplo, una e-shop puede tener tres módulos:

  1. Catálogo de productos con cesta.
  2. Administración para el cliente.
  3. Administración para el comerciante.

Espacio de nombres

Namespace es una característica del lenguaje PHP desde su versión 5.3 y de algunos otros lenguajes de programación también. Ayuda a evitar colisiones de nombres (por ejemplo, dos clases con el mismo nombre) cuando se utilizan diferentes bibliotecas juntas. Consulte la documentación de PHP para más detalles.

Presentador

Presentador es un objeto, que toma la petición tal y como la traduce el enrutador desde la petición HTTP y genera una respuesta. La respuesta puede ser una página HTML, una imagen, un documento XML, un archivo, JSON, una redirección o lo que se te ocurra.

Por presentador suele entenderse un descendiente de la clase Nette\Application\UI\Presenter. Por peticiones ejecuta las acciones apropiadas y renderiza las plantillas.

Enrutador

Traductor bidireccional entre la solicitud HTTP / URL y la acción del presentador. Bidireccional significa que no sólo es posible derivar una acción del presentador a partir de la solicitud HTTP, sino también generar la URL adecuada para una acción. Ver más en el capítulo sobre enrutamiento URL.

Las cookies SameSite proporcionan un mecanismo para reconocer qué condujo a la carga de la página. Puede tener tres valores: Lax, Strict y None (este último requiere HTTPS). Si la solicitud de la página procede directamente del sitio o el usuario abre la página escribiendo directamente en la barra de direcciones o haciendo clic en un marcador, el navegador envía todas las cookies al servidor (es decir, con los indicadores Lax, Strict y None). Si el usuario hace clic en el sitio a través de un enlace desde otro sitio, las cookies con las banderas Lax y None se pasan al servidor. Si la solicitud se realiza por otros medios, como el envío de un formulario POST desde otro sitio, la carga dentro de un iframe, el uso de JavaScript, etc., sólo se envían cookies con la bandera None.

Servicio

En el contexto de la inyección de dependencias, un servicio se refiere a un objeto creado y gestionado por un contenedor DI. Un servicio puede ser fácilmente reemplazado por otra implementación, por ejemplo para propósitos de prueba o para cambiar el comportamiento de una aplicación, sin tener que modificar el código que utiliza el servicio.

Fragmento

Fragmento de una página que se puede volver a renderizar por separado durante una solicitud AJAX.

Ver

La vista es una capa de la aplicación, que es responsable de renderizar los resultados de la petición. Usualmente utiliza un sistema de plantillas y sabe, como renderizar sus componentes o resultados tomados del modelo.