Pular para o conteúdo principal

Arquitetura do Sistema

Esta página documenta a arquitetura técnica do VF Web, incluindo padrões de projeto, estrutura de camadas e tecnologias utilizadas.

Visão Geral da Arquitetura

O VF Web segue uma arquitetura monolítica baseada em PHP, utilizando o padrão MVC simplificado. O sistema é estruturado da seguinte forma:

┌─────────────────────────────────────────────────────────┐
│ FRONT-END │
│ HTML + CSS + JavaScript (Bootstrap 4, jQuery) │
└─────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────┐
│ CAMADA DE VISÃO │
│ Arquivos .html (templates) + Arquivos .php (renders) │
└─────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────┐
│ CAMADA DE CONTROLE │
│ Arquivos *_grava.php (lógica de negócio) │
└─────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────┐
│ CAMADA DE DADOS │
│ Classes em Class/ + Banco MySQL/MariaDB │
└─────────────────────────────────────────────────────────┘

Padrões Utilizados

1. Estrutura de Arquivos

O sistema segue uma estrutura organizada:

  • HTML Templates: Arquivos .html em pastas _HTML/ contendo a estrutura visual
  • PHP de Renderização: Arquivos .php que carregam os templates HTML
  • PHP de Gravação: Arquivos *_grava.php que contém a lógica de negócio

Exemplo baseado em _Cadastros/pessoas_edita.php:

  • Template: _Cadastros/_HTML/pessoas_edita.html
  • Renderização: _Cadastros/pessoas_edita.php
  • Lógica: _Cadastros/pessoas_grava.php

2. Classes de Negócio

Todas as classes estão localizadas em Class/:

ClasseArquivo de origemFunção
DBClass/DB.class.phpAbstração de banco de dados usando PDO
UtilClass/util.class.phpFunções utilitárias (formatação, sanitização)
HtmlClass/html.class.phpHelper para geração de elementos HTML

3. Conexão com Banco de Dados

A conexão é feita através da classe DB.class.php (Class/DB.class.php:30-51):

$dsn = "mysql:host={$host};port={$porta};dbname={$nomedb};charset=utf8mb4";
$this->conexao = new PDO($dsn, $usudb, $senhadb, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
]);

4. Sistema de Sessão

O sistema utiliza sessões PHP para autenticação (index.php:3):

session_start();

Variáveis de sessão importantes:

  • $_SESSION['logado'] - Indica se o usuário está autenticado
  • $_SESSION['idusuario'] - ID do usuário logado
  • $_SESSION['mensagem'] - Mensagens para o usuário

5. Autenticação e Autorização

O fluxo de autenticação:

  1. Usuário acessa index.php
  2. Se já logado, redireciona para _Inicio/inicio.php
  3. Caso contrário, exibe login.html
  4. Formulário envia dados para _BD/conecta_login.php

Estrutura de Tabelas do Banco

As tabelas são criadas automaticamente a partir de _BD/tabelas_sistema.sql (referência em Class/DB.class.php:333).

Tabelas principais:

  • pessoas - Cadastro de pessoas (clientes, fornecedores, funcionários)
  • contapag - Contas a Pagar
  • contarec - Contas a Receber
  • produtos - Cadastro de produtos
  • pedidos - Pedidos de vendas
  • orcamentos - Orçamentos

Configurações do Sistema

As configurações são armazenadas em:

  • privado/constantes/constantes.vf - Constantes do sistema
  • privado/_Constante/ - Diretório de configurações

API e Integrações

API REST

O sistema possui uma classe Api em Class/api.class.php que permite:

  • Geração de chaves de API para clientes (api.class.php:16-61)
  • Integração com sistemas externos

Webhooks

Diretório webhook/ contém arquivos para integração via webhooks.

Seguranção

Proteção de Rotas

O sistema verifica autenticação em todas as páginas internas:

// De _Inicio/inicio.php
if(!$_SESSION['logado']){
header('Location: ../index.php');
exit;
}

Constantes de Segurança

O sistema verifica a existência do arquivo de constantes antes de executar:

// index.php:14-17
if(!realpath("privado/constantes/constantes.vf")){
header("Location: privado/_Constante/criaConstante_login.html");
exit;
}

Sanitização de Entrada

A classe Util (Class/util.class.php) oferece métodos para sanitização:

  • sgr() - Sanitização para strings (gravar)
  • igr() - Sanitização para inteiros
  • vgr() - Sanitização para valores monetários
  • dgr() - Sanitização para datas

Referências

  • Arquivo principal de entrada: index.php
  • Menu do sistema: menu.html
  • Login: login.html
  • Classes: Class/DB.class.php, Class/util.class.php
  • Constantes: constantes.vf (gerado automaticamente)