{"id":15916826,"url":"https://github.com/jandersongarcia/mobiphp","last_synced_at":"2025-04-03T11:25:36.131Z","repository":{"id":218383626,"uuid":"744496236","full_name":"jandersongarcia/mobiphp","owner":"jandersongarcia","description":"Mobi é um framework PHP para desenvolvimento rápido de aplicações completas ou soluções back-end.","archived":false,"fork":false,"pushed_at":"2024-01-30T14:46:42.000Z","size":11116,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T00:44:05.005Z","etag":null,"topics":["framework","php","php7"],"latest_commit_sha":null,"homepage":"https://github.com/jandersongarcia/mobiphp","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jandersongarcia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-01-17T12:22:35.000Z","updated_at":"2024-01-24T19:26:28.000Z","dependencies_parsed_at":"2024-01-22T18:45:13.368Z","dependency_job_id":"620d0fcc-125f-476a-915f-dcc8eee4ad9c","html_url":"https://github.com/jandersongarcia/mobiphp","commit_stats":null,"previous_names":["jandersongarcia/mobiphp"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jandersongarcia%2Fmobiphp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jandersongarcia%2Fmobiphp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jandersongarcia%2Fmobiphp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jandersongarcia%2Fmobiphp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jandersongarcia","download_url":"https://codeload.github.com/jandersongarcia/mobiphp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246991152,"owners_count":20865601,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framework","php","php7"],"created_at":"2024-10-06T18:05:09.365Z","updated_at":"2025-04-03T11:25:36.106Z","avatar_url":"https://github.com/jandersongarcia.png","language":"PHP","readme":"# MobiPHP\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/jandersongarcia/MobiPHP/main/public/assets/images/mobi-logo.png\" alt=\"MobiPHP\"\u003e\n\u003c/p\u003e\n\nO **MobiPHP** é um framework em PHP com JavaScript projetado para simplificar a criação rápida de aplicações web completas ou atuar como backend. Esta documentação fornece informações essenciais para iniciar o desenvolvimento com o MobiPHP.\n\n# Sumário\n\n- [MobiPHP](#mobiphp)\n  - [Pré-requisitos](#pré-requisitos)\n  - [Estrutura de Pastas](#estrutura-de-pastas)\n  - [Dependências e Bibliotecas](#dependências-e-bibliotecas)\n  - [Instalação](#instalação)\n  - [Criação de Páginas](#criação-de-páginas)\n  - [Trabalhando com Rotas](#trabalhando-com-rotas)\n  - [Criação de Componentes](#criação-de-componentes)\n  - [Criação de Módulos](#criação-de-módulos)\n  - [Módulo de CRUD](#módulo-de-crud)\n    - [Configuração do Banco de Dados](#configuração-do-banco-de-dados)\n    - [Exemplo de Uso](#exemplo-de-uso)\n    - [Exemplo de Uso com Consulta SQL Personalizada](#exemplo-de-uso-com-consulta-sql-personalizada)\n    - [Métodos Disponíveis](#métodos-disponíveis)\n  - [Temas Prontos](#temas-prontos)\n  - [Requisições com JavaScript](#requisições-com-javascript)\n  - [Contribuição](#contribuição)\n  - [Licença](#licença)\n\n## Pré-requisitos\n\nAntes de começar, certifique-se de que sua máquina atenda aos seguintes pré-requisitos:\n\n1. **PHP**: O MobiPHP é baseado em PHP; portanto, é necessário ter o PHP instalado, recomendando-se a versão 7.2 ou superior. [Baixe o PHP](https://www.php.net/).\n\n2. **Banco de Dados**:\n\n   - Para MySQL, certifique-se de ter um servidor MySQL instalado e configurado. [Baixe o MySQL](https://www.mysql.com/).\n\n   - Se preferir o PostgreSQL, instale e configure um servidor PostgreSQL. [Baixe o PostgreSQL](https://www.postgresql.org/).\n\n3. **Composer**: O Composer é uma ferramenta essencial para gerenciar as dependências do MobiPHP. [Baixe o Composer](https://getcomposer.org/).\n\n## Estrutura de Pastas\n\n- **app**: Contém os componentes principais da aplicação.\n  - **components**: Armazena os componentes reutilizáveis.\n  - **modules**: Contém os módulos para interação com o backend.\n  - **pages**: Guarda as páginas da aplicação.\n  - **app.php**: Arquivo principal de configuração.\n\n- **config**: Configurações da aplicação.\n  - **app.php**: Configurações gerais.\n  - **database.php**: Configurações de conexão com o banco de dados.\n  - **prestart.php**: Arquivo de pré-inicialização.\n\n- **core**: Núcleo do framework.\n  - **class**: Classes principais do framework.\n    - **application.php**: Classe de aplicação principal.\n    - **mobi.php**: Classe principal do MobiPHP.\n    - **root.php**: Classe de raiz.\n    - **routes.php**: Classe para o tratamento de rotas.\n  - **database**: Classes de conexão com bancos de dados.\n    - **mysql.php**: Classe para conexão com MySQL.\n    - **pgsql.php**: Classe para conexão com PostgreSQL.\n  - **js**: Arquivos JavaScript.\n    - **routes.mobi.js**: Controlador JavaScript principal.\n    - **request.mobi.js**: Tratamento de requisições via GET e POST\n  - **json**: Arquivos JSON.\n    - **routes.json**: Definição de rotas em formato JSON.\n  - **php**: Scripts PHP.\n    - **composer**: Scripts para criação e exclusão de componentes e páginas.\n    - **controller**: Scripts para gerar arquivos CSS e JavaScript.\n    - **pages**: Páginas específicas.\n    - **start.php**: Arquivo de inicialização.\n\n- **languages**: Traduções da aplicação.\n  - **pt-br.php**: Tradução para o português brasileiro.\n\n- **node_modules**: Dependências Node.js.\n\n- **public**: Recursos públicos acessíveis pelo navegador.\n  - **assets**: Ícones e imagens.\n  - **css**: Estilos da aplicação.\n    - **styleRoot.css**: Estilo principal.\n  - **error**: Páginas de erro.\n    - **403.php**: Página de erro 403 (Acesso Negado).\n    - **404.php**: Página de erro 404 (Não Encontrado).\n  - **js**: Scripts JavaScript.\n    - **styleRoot.js**: Script JavaScript principal.\n\n- **vendor**: Dependências PHP.\n\n- **.htaccess**: Configurações do Apache.\n\n- **composer.json**, **composer.lock**: Configurações e bloqueio de versões para o Composer.\n\n- **index.php**: Ponto de entrada da aplicação.\n\n- **package-lock.json**, **package.json**: Configurações do Node.js.\n\n- **robots.txt**: Arquivo de exclusão de robôs.\n\n## Dependências e Bibliotecas\n\nO MobiPHP faz uso das seguintes bibliotecas e dependências, algumas incorporadas diretamente:\n\n- **matthiasmullie**: Biblioteca PHP para manipulação de arquivos e diretórios. [matthiasmullie/github](https://github.com/matthiasmullie).\n\n- **bootstrap**: Framework front-end para design responsivo, opcionalmente incorporado no MobiPHP. [twbs/bootstrap](https://github.com/twbs/bootstrap).\n\n- **bootstrap-icons**: Conjunto de ícones para uso com Bootstrap. [twbs/bootstrap-icons](https://github.com/twbs/bootstrap-icons).\n\n- **navigo.js**: Biblioteca para roteamento no lado do cliente, simplificando a construção de Single Page Applications. [krasimir/navigo](https://github.com/krasimir/navigo).\n\n- **jquery**: Biblioteca JavaScript para manipulação do DOM, opcionalmente incorporada no MobiPHP. [jquery/jquery](https://github.com/jquery/jquery)\n\nAo utilizar o MobiPHP, você tem a flexibilidade de incorporar o Bootstrap e o jQuery ou substituí-los por outras bibliotecas.\n\nCertifique-se de revisar a documentação oficial de cada biblioteca para obter informações detalhadas sobre sua utilização e configuração.\n\n## Instalação\n\n- Antes de criar o projeto, certifique-se de que sua máquina local tenha **PHP** e **Composer** instalados.\n- Depois de instalados, você pode criar um novo projeto através do _create-project_ comando do Composer:\n\n```bash\ncomposer create-project --stability=dev jandersongarcia/mobi-php nome-do-projeto\n```\n\n## Criação de Páginas\n\nO MobiPHP simplifica a criação de páginas automaticamente através do Composer.\n\n```bash\ncomposer mobi-create-page nome-da-pagina nome-da-rota\n```\n\n- Isso criará a pasta da página e configurará a rota em core/json/routes.json.\n- A estrutura da pasta criada é a seguinte:\n\n### Estrutura da Página Criada\n- **app**\n    - **pages**\n      - **Novapagina**: pasta da página\n        - **Novapagina.controller.php**: scripts de controle da página\n        - **Novapagina.css**: folha de estilo CSS\n        - **Novapagina.js**: arquivo JavaScript da página\n        - **Novapagina.view.php**: página de visualização\n\n- Para **excluir uma página**, utilize o comando.\n```bash\ncomposer mobi-delete-page nome-da-pagina\n```\n\n## Trabalhando com Rotas\n- Para utilizar as rotas, basta colocar o caminho dentro de um link.\n- Supondo que temos as rotas 'product' e 'product/form' para chamar em links diferentes, ficaria assim:\n\n```html\n  \u003ca href=\"/product\" \u003eListar Produtos\u003c/a\u003e\n  \u003ca href=\"/product/form\" \u003eCadastrar Produto\u003c/a\u003e_\n```\n### Criação de subrotas\n- No caso de subrotas, podemos informar o caminho na criação da página.\n- **Por exemplo**: Se precisar uma subrota _empresa/cadastro_, o comando seria\n\n```bash\ncomposer mobi-create-page nome-da-pagina empresa/cadastro\n```\n\n### Listar Rotas\n- Caso precise listar as rotas da sua aplicação, poderá utilizar o comando **composer mobi-list-routes** ou acessa-las diretamente no arquivo json que fica em _core/json/routes.json_.\n\n```bash\ncomposer mobi-list-routes\n```\n\n### Renomear rota\n- Para alterar o nome de uma rota, use o comando **composer mobi-rename-route rota-atual nova-rota**\n- Por exemplo: Supondo que precise alterar a rota _product_ para _register_, o comando ficaria o seguinte: **composer mobi-rename-route product register**\n\n```bash\ncomposer mobi-rename-route rota-antiga nova-rota\n```\n\n## Criação de Componentes\n\nA utilização de componentes oferece uma maneira simples e eficiente de reutilizar código.\n- Utilize o comando:\n\n```bash\ncomposer mobi-create-component nome-do-componente\n```\n- Isso criará o componente automaticamente dentro da pasta **components**.\n\n### Estrutura do Componente Criado\n- **app**\n    - **components**\n      - **Novocomponente**: pasta do componente\n        - **Novocomponente.controller.php**: scripts de controle do componente\n        - **Novocomponente.css**: folha de estilo CSS\n        - **Novocomponente.js**: arquivo JavaScript do componente\n        - **Novocomponente.view.php**: página de visualização do componente\n\n## Criação de Módulos\n- Os módulos são úteis para interação com o backend via requisição.\n- Os arquivos do módulo serão criados dentro do diretório modules.\n- Utilize o comando:\n\n```bash\ncomposer mobi-create-module nome-do-modulo\n```\n\n### Estrutura do Módulo Criado\n- **app**\n  - **modules**\n    - **Novomodulo**: pasta do módulo\n      - **Novomodulo.controller.php**: scripts de controle\n      - **Novomodulo.modal.php**: página de modal\n\n## Módulo de CRUD\nO CRUD (Create, Read, Update, Delete) do MobiPHP facilita a manipulação de dados em um banco de dados MySQL ou PostgreSQL. Este, fornece métodos para realizar estas operações de forma eficiente, eliminando a necessidade de escrever consultas SQL manualmente.\n\n### Configuração do Banco de Dados\n\nAntes de utilizar o módulo de CRUD, é necessário configurar as informações do banco de dados no arquivo `database.php` dentro da pasta `config`. Certifique-se de fornecer as informações corretas de acordo com o banco de dados que você está utilizando (MySQL ou PostgreSQL).\n\n```php\n// Exemplo de configuração para MySQL\n'app_data_type' =\u003e 'mysql',\n'mysql' =\u003e [\n    'driver' =\u003e 'mysql',\n    'host' =\u003e 'localhost',\n    'port' =\u003e '3306',\n    'database' =\u003e 'mobidb',\n    'username' =\u003e 'root',\n    'password' =\u003e '',\n    'charset' =\u003e 'utf8mb4',\n    'collation' =\u003e 'utf8mb4_unicode_ci',\n],\n\n// Exemplo de configuração para PostgreSQL\n'app_data_type' =\u003e 'pgsql',\n'pgsql' =\u003e [\n    'driver' =\u003e 'pgsql',\n    'host' =\u003e 'localhost',\n    'port' =\u003e '5432',\n    'database' =\u003e '',\n    'username' =\u003e '',\n    'password' =\u003e '',\n    'charset' =\u003e 'utf8',\n    'schema' =\u003e 'public',\n],\n```\n\n## Exemplo de Uso\n\nA seguir, apresentamos um exemplo didático de como utilizar o módulo de CRUD em um ambiente MySQL. O mesmo princípio se aplica ao PostgreSQL, ajustando apenas a configuração do banco de dados.\n\n```php\n\u003c?php\nuse Sql\\MySQL;\n\nclass ExemploCRUD extends MySQL\n{\n    // Métodos CRUD podem ser implementados aqui\n}\n\n// Exemplo de uso do CRUD MySQL\n$crud = new ExemploCRUD();\n\n// Inserir um novo registro\n$dataToInsert = ['campo1' =\u003e 'valor1', 'campo2' =\u003e 'valor2'];\n$resultInsert = $crud-\u003einsert('nome_tabela', $dataToInsert);\necho $resultInsert;\n\n// Obter todos os registros\n$resultSelectAll = $crud-\u003egetAll('nome_tabela');\necho $resultSelectAll;\n\n// Obter um registro por ID\n$resultSelectById = $crud-\u003egetById('nome_tabela', 'id', 1);\necho $resultSelectById;\n\n// Atualizar um registro\n$dataToUpdate = ['campo1' =\u003e 'novo_valor1', 'campo2' =\u003e 'novo_valor2'];\n$resultUpdate = $crud-\u003eupdate('nome_tabela', $dataToUpdate, 1);\necho $resultUpdate;\n\n// Excluir um registro\n$resultDelete = $crud-\u003edelete('nome_tabela', 1);\necho $resultDelete;\n```\n\nCertifique-se de substituir `'nome_tabela'`, `'campo1'`, `'campo2'`, etc., com os valores correspondentes ao seu banco de dados.\n\n### Exemplo de Uso com Consulta SQL Personalizada\n\nPara realizar uma consulta SQL personalizada simples, você pode utilizar o método `query` do módulo de CRUD do MobiPHP. Vamos exemplificar a execução de uma consulta SELECT básica.\n\n```php\n\u003c?php\n\n// Consulta SQL simples\n$sqlQuerySimples = \"SELECT * FROM tabela_exemplo WHERE coluna_condicao = ?\";\n$queryParamsSimples = ['valor_condicao'];\n\n$resultSimples = $crud-\u003equery($sqlQuerySimples, $queryParamsSimples);\n\n// Exibir os resultados da consulta SQL simples\necho $resultSimples;\n```\n\nEste exemplo executa uma consulta SQL simples utilizando um WHERE com um parâmetro de condição.\n\n### Consultas SQL Mais Complexas\n\nPara consultas mais complexas que envolvem INNER JOIN, ORDER BY e GROUP BY, você pode construir de acordo com suas necessidades. A seguir, apresentamos um exemplo que combina esses elementos.\n\n```php\n\u003c?php\n\n// Consulta SQL complexa com INNER JOIN, ORDER BY e GROUP BY\n$sqlQueryComplexa = \"SELECT usuarios.nome AS nome_usuario, COUNT(pedidos.id) AS total_pedidos\n                     FROM usuarios\n                     INNER JOIN pedidos ON usuarios.id = pedidos.id_usuario\n                     WHERE usuarios.cidade = ?\n                     GROUP BY usuarios.nome\n                     ORDER BY total_pedidos DESC\";\n\n$queryParamsComplexa = ['Sao Paulo'];\n\n$resultComplexa = $crud-\u003equery($sqlQueryComplexa, $queryParamsComplexa);\n\n// Exibir os resultados da consulta SQL complexa\necho $resultComplexa;\n```\n\nNeste exemplo:\n\n- Realizamos um INNER JOIN entre as tabelas `usuarios` e `pedidos`.\n- Utilizamos um WHERE para filtrar por uma condição específica (cidade dos usuários).\n- Aplicamos um GROUP BY para contar o total de pedidos por usuário.\n- Utilizamos ORDER BY para ordenar os resultados pelo total de pedidos em ordem decrescente.\n\nTodas as respostas desses métodos são fornecidas em formato JSON para facilitar a manipulação dos dados por outras linguagens, como o JavaScript.\n\n## Métodos Disponíveis\n\nA seguir, estão os métodos disponíveis no módulo de CRUD:\n\n### `insert($table, $data)`\n\nInsere dados em uma tabela e retorna um JSON indicando sucesso ou falha na inserção.\n\n### `getAll($table)`\n\nObtém todos os registros de uma tabela e retorna um JSON.\n\n### `getById($table, $primaryKey, $id)`\n\nObtém um registro por ID de uma tabela e retorna um JSON.\n\n### `update($table, $data, $id)`\n\nAtualiza um registro em uma tabela e retorna um JSON indicando sucesso ou falha na atualização.\n\n### `delete($table, $id)`\n\nExclui um registro de uma tabela e retorna um JSON indicando sucesso ou falha na exclusão.\n\n### `query($sql, $params)`\n\nExecuta uma consulta SQL personalizada e retorna os resultados em JSON.\n\nLembre-se de adaptar os exemplos conforme necessário para atender aos requisitos específicos da sua aplicação. Este é apenas um guia inicial para o uso do módulo de CRUD no MobiPHP. Para obter informações detalhadas sobre outros métodos ou personalizações avançadas, consulte a documentação oficial do MobiPHP.\n\n## Temas Prontos\n\n- A criação de algumas telas como login e painel adminstrativo são padrões em todo o sistema. Pensando nestas situações, o Mobi-PHP tem alguns temas que podem ser instalados em sua aplicação apenas com um comando.\n- Os temas são instalados em componentes e podem ser alterados e conforme a necessidade;\n\nPainel administrativo:\n```bash\ncomposer mobi-theme-install panel-admin nome-do-componente\n```\n\n## Requisições com JavaScript\nPara simplificar o processo de envio de solicitações via POST ou GET em JavaScript, recomendo a utilização da biblioteca Mobi-Request. Essa pequena biblioteca já está pré-instalada por padrão no Mobi. [Documentação][https://github.com/jandersongarcia/mobiRequest]\n\n## Contribuição\n\nContribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests para melhorar o Mobi Request.\n\n## Licença\n\nEste projeto é licenciado sob a [Licença MIT](LICENSE).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjandersongarcia%2Fmobiphp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjandersongarcia%2Fmobiphp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjandersongarcia%2Fmobiphp/lists"}