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:
- Catálogo de produtos com cesta.
- Administração para o cliente.
- 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.
Cookie SameSite
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.