Nette Documentation Preview

syntax
Glossário de Termos
*******************


AJAX .[#toc-ajax]
-----------------
JavaScript e XML assíncronos - tecnologia para comunicação cliente-servidor sobre o protocolo HTTP sem a necessidade de recarregar a página inteira durante cada solicitação. Apesar da sigla, o formato [JSON |#JSON] é freqüentemente utilizado ao invés do XML.


Ação do apresentador .[#toc-presenter-action]
---------------------------------------------
Parte lógica do [apresentador |#presenter], realizando uma ação, como mostrar uma página de produto, assinar um usuário, etc. Um apresentador pode ter mais ações.


BOM
---
A chamada máscara de ordem de byte* é um primeiro caracter especial de um arquivo e indica a ordem de byte na codificação. Alguns editores a incluem automaticamente, é praticamente invisível, mas causa problemas com cabeçalhos e envio de saída de dentro do PHP. Você pode usar o [Code Checker |code-checker:] para remoção em massa.


Controlador .[#toc-controller]
------------------------------
O controlador processa as solicitações do usuário e, com base nelas, chama uma determinada lógica de aplicação (ou seja, [modelo |#model]), depois chama a [visualização |#view] para a renderização dos dados. Analogia para os controladores são [os apresentadores |#presenter] no Nette Framework.


Roteiro transversal (XSS) .[#toc-cross-site-scripting-xss]
----------------------------------------------------------
O Cross-Site Scripting é um método de interrupção do site que utiliza entrada não modelada. Um atacante pode injetar seu próprio código HTML ou JavaScript e mudar a aparência da página ou mesmo reunir informações sensíveis sobre os usuários. A proteção contra XSS é simples: fuga consistente e correta de todas as cadeias de caracteres e entradas.

Nette Framework vem com uma novíssima tecnologia de [Context-Aware Escaping |latte:safety-first#context-aware-escaping], que o livrará dos riscos do Cross-Site Scripting para sempre. Ela escapa automaticamente de todas as entradas baseadas em um determinado contexto, de modo que é impossível para um codificador esquecer acidentalmente algo.


Falsificação de pedido entre locais (CSRF) .[#toc-cross-site-request-forgery-csrf]
----------------------------------------------------------------------------------
Um ataque de Pedido Cruzado de Falsificação é que o atacante atrai a vítima para visitar uma página que executa silenciosamente um pedido no navegador da vítima para o servidor onde a vítima está atualmente logada, e o servidor acredita que o pedido foi feito pela vítima à sua vontade. O servidor executa uma determinada ação sob a identidade da vítima, mas sem que a vítima se dê conta disso. Ele pode estar alterando ou apagando dados, enviando uma mensagem, etc.

Nette Framework ** protege automaticamente as formas e sinais nos apresentadores*** deste tipo de ataque. Isto é feito impedindo que eles sejam enviados ou chamados de outro domínio.


Injeção de dependência .[#toc-dependency-injection]
---------------------------------------------------
A Injeção de Dependência (DI) é um padrão de design que diz como separar a criação de objetos de suas dependências. Ou seja, uma classe não é responsável por criar ou inicializar suas dependências, mas, em vez disso, essas dependências são fornecidas por um código externo (que pode incluir um [recipiente DI |#Dependency Injection container]). A vantagem é que ela permite maior flexibilidade de código, melhor legibilidade e testes de aplicação mais fáceis porque as dependências são facilmente substituíveis e isoladas de outras partes do código. Para mais informações, veja [O que é Injeção de Dependência? |dependency-injection:introduction]


Dependência Recipiente de injeção .[#toc-dependency-injection-container]
------------------------------------------------------------------------
Um recipiente de injeção de dependência (também recipiente DI ou IoC) é uma ferramenta que lida com a criação e gestão de dependências em uma aplicação (ou [serviços |#service]). Um container geralmente tem uma configuração que define quais classes são dependentes de outras classes, quais implementações específicas de dependência a serem usadas e como criar essas dependências. O contêiner então cria esses objetos e os fornece às classes que deles necessitam. Para mais informações, veja [O que é um contêiner DI? |dependency-injection:container]


Fugindo .[#toc-escaping]
------------------------
Escaping é a conversão de caracteres com significado especial em determinado contexto para outras seqüências equivalentes. Exemplo: Queremos escrever citações entre aspas - cadeia fechada. Como as aspas têm um significado especial no contexto da cadeia de caracteres fechada por aspas, há a necessidade de usar outra seqüência equivalente. A seqüência concreta é determinada pelas regras de contexto (por exemplo `\"` na cadeia de caracteres fechada entre aspas do PHP, `"` nos atributos HTML, etc.).


Filtro (Anteriormente Helper) .[#toc-filter-formerly-helper]
------------------------------------------------------------
Função de filtro. Nos modelos, o [filtro |latte:syntax#filters] é uma função, que ajuda a alterar ou formatar os dados para a forma de saída. Os gabaritos têm vários [filtros padrão |latte:filters] predefinidos.


Invalidação .[#toc-invalidation]
--------------------------------
Aviso de um [corte |#snippet] a ser entregue de novo. Em outro contexto, também a liberação de um cache.


JSON .[#toc-json]
-----------------
Formato de intercâmbio de dados baseado na sintaxe JavaScript (é seu subconjunto). As especificações exatas podem ser encontradas em www.json.org.


Componente .[#toc-component]
----------------------------
Parte reutilizável de uma aplicação. Pode ser uma parte visual de uma página, como descrito no capítulo [componentes |application:components], ou o termo também pode significar a classe [Componente |component-model:] (tal componente não tem que ser visual).


Caracteres de controle .[#toc-control-characters]
-------------------------------------------------
Os caracteres de controle são caracteres invisíveis, que podem ocorrer em um texto e eventualmente causar alguns problemas. Para sua remoção em massa de arquivos, você pode usar o [Code Checker |code-checker:], para sua remoção de uma função de uso variável [Strings::normalize() |utils:strings#normalize].


Eventos .[#toc-events]
----------------------
Um evento é uma situação esperada no objeto, que quando ocorre, os chamados manipuladores são chamados, ou seja, chamadas de retorno reagindo ao evento ("amostra":https://gist.github.com/dg/332cdd51bdf7d66a6d8003b134508a38). O evento pode ser, por exemplo, envio de formulário, login de usuário, etc. Os eventos são, portanto, uma forma de *Inversão de Controle*.

Por exemplo, um login de usuário ocorre no método `Nette\Security\User::login()`. O objeto `User` tem uma variável pública `$onLoggedIn`, que é um array ao qual qualquer pessoa pode adicionar uma chamada de retorno. Assim que o usuário faz o login, o método `login()` chama todas as chamadas de retorno no array. O nome de uma variável no formulário `onXyz` é uma convenção usada em toda a Nette.


Latte .[#toc-latte]
-------------------
Um dos [sistemas de modelos |latte:] mais inovadores de todos os tempos.


Modelo .[#toc-model]
--------------------
O modelo representa a base de dados e funções de toda a aplicação. Ele inclui toda a lógica da aplicação (às vezes também referida como "lógica comercial"). É o **M*** de **M***VC ou MPV. Qualquer ação do usuário (login, colocar coisas na cesta, mudança do valor de um banco de dados) representa uma ação do modelo.

O modelo gerencia seu estado interno e fornece uma interface pública. Ao chamar esta interface, podemos tomar ou mudar seu estado. O modelo não sabe da existência de uma [visão |#view] ou [controlador |#controller], o modelo é totalmente independente sobre eles.


Model-View-Controller .[#toc-model-view-controller]
---------------------------------------------------
Arquitetura de software, que surgiu no desenvolvimento de aplicações GUI para separar o código para o controle de fluxo ([controlador |#controller]) do código da lógica da aplicação ([modelo |#model]) e do código de renderização de dados ([view |#view]). Dessa forma, o código é mais compreensível, facilita o desenvolvimento futuro e permite testar partes separadas separadamente.


Model-View-Presenter .[#toc-model-view-presenter]
-------------------------------------------------
Arquitetura baseada em [Model-View-Controller |#Model-View-Controller].


Módulo .[#toc-module]
---------------------
[O módulo |application:modules] em Nette Framework representa uma coleção de apresentadores e modelos, eventualmente também componentes e modelos, que servem dados a um apresentador. Portanto, é uma certa parte lógica de uma aplicação.

Por exemplo, uma e-shop pode ter três módulos:
1) Catálogo de produtos com cesta.
2) Administração para o cliente.
3) Administração para o lojista.


Namespace .[#toc-namespace]
---------------------------
O espaço de nomes é uma característica da linguagem PHP de sua versão 5.3 e de algumas outras linguagens de programação também. Ele ajuda a evitar colisões de nomes (por exemplo, duas classes com o mesmo nome) ao usar bibliotecas diferentes juntas. Veja a [documentação PHP |https://www.php.net/manual/en/language.namespaces.rationale.php] para mais detalhes.


Apresentador .[#toc-presenter]
------------------------------
O apresentador é um objeto, que toma a [solicitação |api:Nette\Application\Request] traduzida pelo roteador a partir da solicitação HTTP e gera uma [resposta |api:Nette\Application\Response]. A resposta pode ser uma página HTML, imagem, documento XML, arquivo, JSON, redirecionamento ou o que quer que você pense.

Por um apresentador, geralmente se entende um descendente da classe [api:Nette\Application\UI\Presenter]. Por solicitação, ele executa [ações |application:presenters#life-cycle-of-presenter] apropriadas e apresenta modelos.


Roteador .[#toc-router]
-----------------------
Tradutor bidirecional entre solicitação HTTP / URL e ação do apresentador. Bi-direcional significa que não só é possível derivar uma [ação do apresentador |#presenter action] a partir da solicitação HTTP, mas também gerar a URL apropriada para uma ação. Veja mais no capítulo sobre [roteamento de URL |application:routing].


Cookie SameSite .[#toc-samesite-cookie]
---------------------------------------
Os cookies do SameSite fornecem um mecanismo para reconhecer o que levou à carga da página. Ele pode ter três valores: `Lax`, `Strict` e `None` (este último requer HTTPS). Se a solicitação para a página vier diretamente do site ou o usuário abrir a página digitando diretamente na barra de endereço ou clicando em um bookmark, o navegador envia todos os cookies para o servidor (ou seja, com as bandeiras `Lax`, `Strict` e `None`). Se o usuário clicar no site através de um link de outro site, os cookies com as bandeiras `Lax` e `None` são passados para o servidor. Se a solicitação for feita por outros meios, tais como envio de um formulário POST de outro site, carregamento dentro de um iframe, usando JavaScript, etc., somente serão enviados cookies com as bandeiras `None`.


Serviço .[#toc-service]
-----------------------
No contexto da injeção por dependência, um serviço refere-se a um objeto que é criado e administrado por um recipiente DI. Um serviço pode ser facilmente substituído por outra implementação, por exemplo, para fins de teste ou para alterar o comportamento de uma aplicação, sem ter que modificar o código que utiliza o serviço.


Snippet .[#toc-snippet]
-----------------------
Corte de uma página, que pode ser entregue separadamente durante um pedido [AJAX |#AJAX].


Ver .[#toc-view]
----------------
View é uma camada de aplicação, que é responsável pela apresentação dos resultados da solicitação. Normalmente utiliza um sistema de modelagem e sabe, como renderizar seus componentes ou resultados extraídos do modelo.



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

Glossário de Termos

AJAX

JavaScript e XML assíncronos – tecnologia para comunicação cliente-servidor sobre o protocolo HTTP sem a necessidade de recarregar a página inteira durante cada solicitação. Apesar da sigla, o formato JSON é freqüentemente utilizado ao invés do XML.

Ação do apresentador

Parte lógica do apresentador, realizando uma ação, como mostrar uma página de produto, assinar um usuário, etc. Um apresentador pode ter mais ações.

BOM

A chamada máscara de ordem de byte* é um primeiro caracter especial de um arquivo e indica a ordem de byte na codificação. Alguns editores a incluem automaticamente, é praticamente invisível, mas causa problemas com cabeçalhos e envio de saída de dentro do PHP. Você pode usar o Code Checker para remoção em massa.

Controlador

O controlador processa as solicitações do usuário e, com base nelas, chama uma determinada lógica de aplicação (ou seja, modelo), depois chama a visualização para a renderização dos dados. Analogia para os controladores são os apresentadores no Nette Framework.

Roteiro transversal (XSS)

O Cross-Site Scripting é um método de interrupção do site que utiliza entrada não modelada. Um atacante pode injetar seu próprio código HTML ou JavaScript e mudar a aparência da página ou mesmo reunir informações sensíveis sobre os usuários. A proteção contra XSS é simples: fuga consistente e correta de todas as cadeias de caracteres e entradas.

Nette Framework vem com uma novíssima tecnologia de Context-Aware Escaping, que o livrará dos riscos do Cross-Site Scripting para sempre. Ela escapa automaticamente de todas as entradas baseadas em um determinado contexto, de modo que é impossível para um codificador esquecer acidentalmente algo.

Falsificação de pedido entre locais (CSRF)

Um ataque de Pedido Cruzado de Falsificação é que o atacante atrai a vítima para visitar uma página que executa silenciosamente um pedido no navegador da vítima para o servidor onde a vítima está atualmente logada, e o servidor acredita que o pedido foi feito pela vítima à sua vontade. O servidor executa uma determinada ação sob a identidade da vítima, mas sem que a vítima se dê conta disso. Ele pode estar alterando ou apagando dados, enviando uma mensagem, etc.

Nette Framework ** protege automaticamente as formas e sinais nos apresentadores*** deste tipo de ataque. Isto é feito impedindo que eles sejam enviados ou chamados de outro domínio.

Injeção de dependência

A Injeção de Dependência (DI) é um padrão de design que diz como separar a criação de objetos de suas dependências. Ou seja, uma classe não é responsável por criar ou inicializar suas dependências, mas, em vez disso, essas dependências são fornecidas por um código externo (que pode incluir um recipiente DI). A vantagem é que ela permite maior flexibilidade de código, melhor legibilidade e testes de aplicação mais fáceis porque as dependências são facilmente substituíveis e isoladas de outras partes do código. Para mais informações, veja O que é Injeção de Dependência?

Dependência Recipiente de injeção

Um recipiente de injeção de dependência (também recipiente DI ou IoC) é uma ferramenta que lida com a criação e gestão de dependências em uma aplicação (ou serviços). Um container geralmente tem uma configuração que define quais classes são dependentes de outras classes, quais implementações específicas de dependência a serem usadas e como criar essas dependências. O contêiner então cria esses objetos e os fornece às classes que deles necessitam. Para mais informações, veja O que é um contêiner DI?

Fugindo

Escaping é a conversão de caracteres com significado especial em determinado contexto para outras seqüências equivalentes. Exemplo: Queremos escrever citações entre aspas – cadeia fechada. Como as aspas têm um significado especial no contexto da cadeia de caracteres fechada por aspas, há a necessidade de usar outra seqüência equivalente. A seqüência concreta é determinada pelas regras de contexto (por exemplo \" na cadeia de caracteres fechada entre aspas do PHP, " nos atributos HTML, etc.).

Filtro (Anteriormente Helper)

Função de filtro. Nos modelos, o filtro é uma função, que ajuda a alterar ou formatar os dados para a forma de saída. Os gabaritos têm vários filtros padrão predefinidos.

Invalidação

Aviso de um corte a ser entregue de novo. Em outro contexto, também a liberação de um cache.

JSON

Formato de intercâmbio de dados baseado na sintaxe JavaScript (é seu subconjunto). As especificações exatas podem ser encontradas em www.json.org.

Componente

Parte reutilizável de uma aplicação. Pode ser uma parte visual de uma página, como descrito no capítulo componentes, ou o termo também pode significar a classe Componente (tal componente não tem que ser visual).

Caracteres de controle

Os caracteres de controle são caracteres invisíveis, que podem ocorrer em um texto e eventualmente causar alguns problemas. Para sua remoção em massa de arquivos, você pode usar o Code Checker, para sua remoção de uma função de uso variável Strings::normalize().

Eventos

Um evento é uma situação esperada no objeto, que quando ocorre, os chamados manipuladores são chamados, ou seja, chamadas de retorno reagindo ao evento (amostra). O evento pode ser, por exemplo, envio de formulário, login de usuário, etc. Os eventos são, portanto, uma forma de Inversão de Controle.

Por exemplo, um login de usuário ocorre no método Nette\Security\User::login(). O objeto User tem uma variável pública $onLoggedIn, que é um array ao qual qualquer pessoa pode adicionar uma chamada de retorno. Assim que o usuário faz o login, o método login() chama todas as chamadas de retorno no array. O nome de uma variável no formulário onXyz é uma convenção usada em toda a Nette.

Latte

Um dos sistemas de modelos mais inovadores de todos os tempos.

Modelo

O modelo representa a base de dados e funções de toda a aplicação. Ele inclui toda a lógica da aplicação (às vezes também referida como „lógica comercial“). É o **M*** de **M***VC ou MPV. Qualquer ação do usuário (login, colocar coisas na cesta, mudança do valor de um banco de dados) representa uma ação do modelo.

O modelo gerencia seu estado interno e fornece uma interface pública. Ao chamar esta interface, podemos tomar ou mudar seu estado. O modelo não sabe da existência de uma visão ou controlador, o modelo é totalmente independente sobre eles.

Model-View-Controller

Arquitetura de software, que surgiu no desenvolvimento de aplicações GUI para separar o código para o controle de fluxo (controlador) do código da lógica da aplicação (modelo) e do código de renderização de dados (view). Dessa forma, o código é mais compreensível, facilita o desenvolvimento futuro e permite testar partes separadas separadamente.

Model-View-Presenter

Arquitetura baseada em Model-View-Controller.

Módulo

O módulo em Nette Framework representa uma coleção de apresentadores e modelos, eventualmente também componentes e modelos, que servem dados a um apresentador. Portanto, é uma certa parte lógica de uma aplicação.

Por exemplo, uma e-shop pode ter três módulos:

  1. Catálogo de produtos com cesta.
  2. Administração para o cliente.
  3. Administração para o lojista.

Namespace

O espaço de nomes é uma característica da linguagem PHP de sua versão 5.3 e de algumas outras linguagens de programação também. Ele ajuda a evitar colisões de nomes (por exemplo, duas classes com o mesmo nome) ao usar bibliotecas diferentes juntas. Veja a documentação PHP para mais detalhes.

Apresentador

O apresentador é um objeto, que toma a solicitação traduzida pelo roteador a partir da solicitação HTTP e gera uma resposta. A resposta pode ser uma página HTML, imagem, documento XML, arquivo, JSON, redirecionamento ou o que quer que você pense.

Por um apresentador, geralmente se entende um descendente da classe Nette\Application\UI\Presenter. Por solicitação, ele executa ações apropriadas e apresenta modelos.

Roteador

Tradutor bidirecional entre solicitação HTTP / URL e ação do apresentador. Bi-direcional significa que não só é possível derivar uma ação do apresentador a partir da solicitação HTTP, mas também gerar a URL apropriada para uma ação. Veja mais no capítulo sobre roteamento de URL.

Os cookies do SameSite fornecem um mecanismo para reconhecer o que levou à carga da página. Ele pode ter três valores: Lax, Strict e None (este último requer HTTPS). Se a solicitação para a página vier diretamente do site ou o usuário abrir a página digitando diretamente na barra de endereço ou clicando em um bookmark, o navegador envia todos os cookies para o servidor (ou seja, com as bandeiras Lax, Strict e None). Se o usuário clicar no site através de um link de outro site, os cookies com as bandeiras Lax e None são passados para o servidor. Se a solicitação for feita por outros meios, tais como envio de um formulário POST de outro site, carregamento dentro de um iframe, usando JavaScript, etc., somente serão enviados cookies com as bandeiras None.

Serviço

No contexto da injeção por dependência, um serviço refere-se a um objeto que é criado e administrado por um recipiente DI. Um serviço pode ser facilmente substituído por outra implementação, por exemplo, para fins de teste ou para alterar o comportamento de uma aplicação, sem ter que modificar o código que utiliza o serviço.

Snippet

Corte de uma página, que pode ser entregue separadamente durante um pedido AJAX.

Ver

View é uma camada de aplicação, que é responsável pela apresentação dos resultados da solicitação. Normalmente utiliza um sistema de modelagem e sabe, como renderizar seus componentes ou resultados extraídos do modelo.