elzobrito / olivia-app
FrameWork Olivia
Requires
- php: ^7.1|^8.2.4
- elzobrito/olivia-databaselibrary: ^3.6
- elzobrito/olivia-force-download: ^1.0
- elzobrito/olivia-pagination: ^1.1
- elzobrito/olivia-pdf: ^1.0
- elzobrito/olivia-router: ^2.2
- elzobrito/olivia-upload-file: ^1.1
- ramsey/uuid: ^4.0
README
Olivia é um framework PHP para aplicações web com organização em MVC, roteamento simples, suporte a CSRF, integração com bibliotecas auxiliares do ecossistema Olivia e uma camada de views baseada em componentes reutilizáveis.
Visão geral
O projeto foi estruturado para servir como base de aplicações web em PHP com:
controllerspara regras de entrada e fluxomodelspara acesso a dadosviewspara renderização das páginascomponentspara composição reutilizável da interfaceroutercentralizado para mapear URLs e ações
Na versão atual, a camada pública já usa componentes para montar a página inicial e a página de erro, facilitando a evolução do layout sem acoplar toda a interface a uma única classe.
Requisitos
- PHP
^7.1ou^8.2.4 - Composer
- Ambiente web compatível com
index.phpna raiz do projeto - Sessão PHP habilitada
Instalação
composer install
Depois, aponte seu servidor local para a pasta do projeto.
Exemplo com XAMPP:
- Coloque o projeto em
htdocs - Inicie Apache
- Acesse a aplicação pelo navegador
Estrutura do projeto
OliviaApp/
|-- app/
| |-- Controller/
| |-- Middleware/
| `-- Models/
|-- lib/
| |-- CommandController.php
| |-- Config.php
| |-- Database.php
| `-- Route.php
|-- publico/
| |-- Components/
| |-- Home/
| |-- View/
| `-- E404.php
|-- vendor/
|-- composer.json
|-- index.php
`-- README.md
Namespaces
O autoload segue PSR-4:
OliviaApp\\->app/OliviaLib\\->lib/OliviaPublico\\->publico/
Fluxo da aplicação
O ponto de entrada é index.php. Ele:
- carrega o autoload do Composer
- inicializa a configuração base da aplicação
- executa o roteador principal
As rotas são registradas em lib/Route.php.
Rotas atuais
Atualmente o projeto expõe as seguintes rotas base:
/->HomeController#index/error404->HomeController#error404
Também existem rotas auxiliares montadas dinamicamente para testes com prefixo olivia.
Camada de views e componentes
A renderização principal usa as classes base:
- publico/View/ViewModel.php
- publico/View/ViewModelErro.php
Essas classes agora oferecem suporte a componentes por meio do método renderComponent().
Componentes disponíveis nesta base:
- publico/Components/Component.php
- publico/Components/Navigation/BrandHeader.php
- publico/Components/Sections/HeroSection.php
- publico/Components/Footers/SimpleFooter.php
- publico/Components/Feedback/ErrorState.php
Como criar uma nova página
- Crie ou atualize um controller em
app/Controller - Registre a rota em
lib/Route.php - Crie uma view em
publico/ - Se necessário, crie componentes em
publico/Components
Exemplo de fluxo:
- rota -> controller
- controller -> view
- view -> componentes
Como criar um componente
Crie uma classe estendendo OliviaPublico\Components\Component e implemente o método render().
Exemplo:
<?php namespace OliviaPublico\Components\Example; use OliviaPublico\Components\Component; class Card extends Component { public function render(): void { echo '<div>'; echo htmlspecialchars($this->prop('title', 'Sem título'), ENT_QUOTES, 'UTF-8'); echo '</div>'; } }
Depois, renderize o componente em uma view:
$this->renderComponent(\OliviaPublico\Components\Example\Card::class, [ 'title' => 'Meu componente', ]);
Segurança
O projeto inicializa proteção CSRF na configuração base e armazena o token em sessão.
Arquivo principal de configuração:
- lib/Config.php
Se você descobrir uma vulnerabilidade de segurança no framework, entre em contato com Elzo Brito pelo e-mail elzo.santos@cps.sp.gov.br.
Dependências principais
elzobrito/olivia-routerelzobrito/olivia-databaselibraryelzobrito/olivia-paginationelzobrito/olivia-pdfelzobrito/olivia-force-downloadramsey/uuid
Próximos passos sugeridos
- criar layout principal com slots
- adicionar componentes de formulário e autenticação
- padronizar páginas CRUD usando a camada de componentes
- documentar middlewares e fluxo de models
Licença
Olivia Framework é um software de código aberto licenciado sob a licença MIT.