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 vista o controlador, 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:
- Catálogo de productos con cesta.
- Administración para el cliente.
- 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.
Cookie SameSite
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.