DOCUMENTAÇÃO DO PADRÃO ESTRELA (GALAXIA FRAMEWORK) =================================================== 1. CONCEITO GERAL ----------------- O padrão "Estrela" (ou Constelação) organiza a aplicação em uma hierarquia clara de componentes, facilitando a navegação e a execução de ações (sinais). A hierarquia é definida por: Constelação -> Estrela -> Satélite -> Sinal - Constelação: O módulo principal (ex: Logistica, Dashboards). - Estrela: Um sub-módulo ou agrupamento funcional (ex: Central, Board, Pedidos). - Satélite: A classe responsável por processar a lógica (ex: Board, Central, SateliteBoard). - Sinal: A ação específica a ser executada (ex: Sincronizar, SalvarConfiguracao). 2. USO EM BOTÕES E VIEWS (FRONTEND) ----------------------------------- Para vincular um botão HTML a uma ação no backend, utiliza-se o helper `$galaxia` encadeando os métodos setters e finalizando com `acaoElemento()`. Exemplo: - `setConstelacao('Nome')`: Define a constelação. - `setEstrela('Nome')`: Define a estrela. - `setSatelite('Nome')`: Define o satélite (Controller ou Classe Lógica). - `setSinal('Nome')`: Define a ação. - `acaoElemento()`: Gera os atributos HTML necessários para o comportamento do framework (ajax/post). 3. USO EM FORMULÁRIOS --------------------- Para renderizar e processar formulários, utiliza-se `viewForm` ou `visualFormulario`. Exemplo: $galaxia->setConstelacao('Logistica') ->setEstrela('Central') ->setSatelite('Admin') ->setSinal('create') ->viewForm(__DIR__, 'forms/salvar_regiao', [...dados...]); 4. PADRÃO "LUZ" (RENDERIZAÇÃO DE COMPONENTES) --------------------------------------------- O padrão "Luz" permite renderizar componentes de interface (como Cards) via PHP (Server-Side Rendering), mantendo a lógica de visualização encapsulada. No Controller (ex: Board.php): public function Luz_NomeDoComponente($data) { // Retorna o HTML renderizado $response['html'] = $this->galaxiaRoute->visual('caminho/para/view', $data, []); $this->galaxiaRoute->addResponse($this->routeId, $response); return $this->response; } Na View (ex: board.php): luz('NomeDoComponente', ['parametro' => $valor])['html']; ?> 5. ESTRUTURA DO CONTROLLER (ROTEAMENTO) --------------------------------------- O Controller principal (Satélite) deve implementar um método `start` que atua como roteador manual para os sinais recebidos. Exemplo de Router (Board.php): public function start(?array $data = []) { $sinal = $data['sinalGxData'] ?? null; if ($sinal == 'Sincronizar') { return $this->Sincronizar($data); // Chama método específico } return $this->Padrao($data); } 6. SATÉLITES DE LÓGICA (BACKEND PURO) ------------------------------------- Para separar a lógica pesada do Controller de Missão, criam-se Satélites dedicados na pasta `Constelacoes`. Estrutura Típica: namespace GalaxiaConstelacoes\Logistica\Board\Satelites; class Board { public function __construct($galaxia, $sinal, $data) { switch($sinal) { case 'sincronizar': $this->Sincronizar($data); break; } } private function Sincronizar($data) { ... lógica ... } } Isso promove a separação de responsabilidades (SOLID) e reutilização de código.