PHPackages                             elzobrito/olivia-app - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. elzobrito/olivia-app

ActiveLibrary[Framework](/categories/framework)

elzobrito/olivia-app
====================

FrameWork Olivia

1.6(3w ago)02PHPPHP ^7.1|^8.2.4

Since Oct 29Pushed 3w ago1 watchersCompare

[ Source](https://github.com/elzobrito/OliviaApp)[ Packagist](https://packagist.org/packages/elzobrito/olivia-app)[ RSS](/packages/elzobrito-olivia-app/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (5)Dependencies (17)Versions (9)Used By (0)

Olivia Framework
================

[](#olivia-framework)

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
-----------

[](#visão-geral)

O projeto foi estruturado para servir como base de aplicações web em PHP com:

- `controllers` para regras de entrada e fluxo
- `models` para acesso a dados
- `views` para renderização das páginas
- `components` para composição reutilizável da interface
- `router` centralizado 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
----------

[](#requisitos)

- PHP `^7.1` ou `^8.2.4`
- Composer
- Ambiente web compatível com `index.php` na raiz do projeto
- Sessão PHP habilitada

Instalação
----------

[](#instalação)

```
composer install
```

Depois, aponte seu servidor local para a pasta do projeto.

Exemplo com XAMPP:

1. Coloque o projeto em `htdocs`
2. Inicie Apache
3. Acesse a aplicação pelo navegador

Estrutura do projeto
--------------------

[](#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
----------

[](#namespaces)

O autoload segue PSR-4:

- `OliviaApp\\` -&gt; `app/`
- `OliviaLib\\` -&gt; `lib/`
- `OliviaPublico\\` -&gt; `publico/`

Fluxo da aplicação
------------------

[](#fluxo-da-aplicação)

O ponto de entrada é index.php. Ele:

1. carrega o autoload do Composer
2. inicializa a configuração base da aplicação
3. executa o roteador principal

As rotas são registradas em lib/Route.php.

Rotas atuais
------------

[](#rotas-atuais)

Atualmente o projeto expõe as seguintes rotas base:

- `/` -&gt; `HomeController#index`
- `/error404` -&gt; `HomeController#error404`

Também existem rotas auxiliares montadas dinamicamente para testes com prefixo `olivia`.

Camada de views e componentes
-----------------------------

[](#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
--------------------------

[](#como-criar-uma-nova-página)

1. Crie ou atualize um controller em `app/Controller`
2. Registre a rota em `lib/Route.php`
3. Crie uma view em `publico/`
4. Se necessário, crie componentes em `publico/Components`

Exemplo de fluxo:

- rota -&gt; controller
- controller -&gt; view
- view -&gt; componentes

Como criar um componente
------------------------

[](#como-criar-um-componente)

Crie uma classe estendendo `OliviaPublico\Components\Component` e implemente o método `render()`.

Exemplo:

```
