模块化对象构建器
Requires
- php: >=7.1.2
- matthiasmullie/minify: ^1.3
- phpmailer/phpmailer: ^6.9
- twbs/bootstrap: ^5.3
- twbs/bootstrap-icons: ^1.10
README
O MOB é um framework em PHP com JavaScript, conhecido como MOB: Modular Object Builder. Projetado para simplificar a rápida construção de aplicações web completas ou atuar como backend, o MOB destaca-se pela abordagem modular do seu construtor de objetos.
Esta documentação fornece informações cruciais para começar o desenvolvimento com o MOB, focando especialmente no Modular Object Builder. Com essa abordagem modular na construção de objetos, o MOB proporciona uma flexibilidade organizada, tornando o desenvolvimento mais eficiente e estruturado.
摘要
- MOB: Modular Object Builder
环境需求
在开始使用 MOB 进行开发之前,确保您的机器满足以下环境需求,按重要性排序:
-
PHP:MOB 基于PHP;请确保您的机器已安装PHP。我们推荐使用7.2或更高版本。您可以从php.net下载PHP。
# Verifique se o PHP está instalado php --version -
Composer:Composer是管理MOB依赖项的必要工具。请确保您的机器已安装Composer。您可以从getcomposer.org下载Composer。
# Verifique se o Composer está instalado composer --version -
Node.js 和 npm:MOB使用由Node.js和npm管理的JavaScript依赖项。请确保您的机器已安装Node.js和npm。您可以从nodejs.org下载Node.js。
# Verifique se o Node.js está instalado node --version # Verifique se o npm está instalado npm --version
-
数据库(MySQL或PostgreSQL):如果您正在使用数据库,请确保您的机器已正确安装并配置了MySQL或PostgreSQL。您可以从mysql.com下载MySQL或从postgresql.org下载PostgreSQL。
-
数据库配置:在安装数据库后,请确保在
config/database.php文件中正确配置连接信息。
这些需求对于确保适当且顺畅的开发环境至关重要。请按照提供的顺序执行这些步骤以实现高效的配置。
文件夹结构
-
app:包含应用的主要组件。
- components:存储可重用组件。
- modules:包含与后端交互的模块。
- pages:存储应用页面。
- app.php:主要配置文件。
-
config:应用配置。
- app.php:全局配置。
- database.php:数据库连接配置。
- prestart.php:预初始化文件。
-
core:框架核心。
- class:框架主要类。
- application.php:主应用程序类。
- mobi.php:MOB主类。
- root.php:根类。
- routes.php:路由处理类。
- database:数据库连接类。
- mysql.php:MySQL连接类。
- pgsql.php:PostgreSQL连接类。
- js:JavaScript文件。
- routes.mobi.js:主JavaScript控制器。
- request.mobi.js:处理GET和POST请求。
- json:JSON文件。
- routes.json:JSON格式路由定义。
- php:PHP脚本。
- composer:创建和删除组件和页面的脚本。
- controller:生成CSS和JavaScript文件的脚本。
- pages:特定页面。
- start.php:初始化文件。
- class:框架主要类。
-
languages:应用程序翻译。
- pt-br.php:巴西葡萄牙语翻译。
-
node_modules:Node.js依赖。
-
public:浏览器可访问的公共资源。
- assets:图标和图片。
- css:应用程序样式。
- styleRoot.css:主样式。
- error:错误页面。
- 403.php:403错误页面(访问被拒绝)。
- 404.php:404错误页面(未找到)。
- js:JavaScript脚本。
- styleRoot.js:主JavaScript脚本。
-
templates:系统使用的模板。
- email:电子邮件主题。
- erros:错误消息主题。
-
var:存储临时变量。
- logs:记录应用程序运行的重要信息。
- temp:存储项目执行过程中使用的临时文件。
-
vendor:PHP依赖。
-
.htaccess:Apache配置。
-
composer.json,composer.lock:Composer配置和版本锁定。
-
index.php:应用程序入口点。
-
package-lock.json,package.json:Node.js配置。
-
robots.txt:机器人排除文件。
依赖和库
MOB使用以下库和依赖项,其中一些直接集成
-
matthiasmullie:用于文件和目录操作的PHP库。 matthiasmullie/github。
-
bootstrap:响应式前端设计框架,可选地集成到MOB中。 twbs/bootstrap。
-
bootstrap-icons:与Bootstrap一起使用的图标集。 twbs/bootstrap-icons。
-
navigo.js:用于客户端路由的库,简化了单页应用程序的建设。 krasimir/navigo。
-
jquery:用于DOM操作的JavaScript库,可选地集成到MOB中。 jquery/jquery
-
PHPMailer:用于发送电子邮件的PHP库。 phpmailer/phpmailer
使用MOB时,您有灵活性将Bootstrap和jQuery集成或替换为其他库。
请确保查阅每个库的官方文档,以获取其使用和配置的详细信息。
安装
- 在创建项目之前,请确保您的本地机器已安装< strong>PHP和< strong>Composer。
- 安装完成后,您可以通过Composer的create-project命令创建一个新的项目。
composer create-project --stability=dev jandersongarcia/mob nome-do-projeto
创建页面
MOB通过Composer简化了自动创建页面的过程。
composer mob-create-page nome-da-pagina nome-da-rota
- 这将创建页面文件夹并配置core/json/routes.json中的路由。
- 创建的文件夹结构如下
创建的页面结构
-
app
- pages
- Novapagina:页面文件夹
- Novapagina.controller.php:页面控制脚本
- Novapagina.css:CSS样式表
- Novapagina.js:页面JavaScript文件
- Novapagina.view.php:页面视图
- Novapagina:页面文件夹
- pages
-
要删除页面,请使用以下命令。
composer mob-remove-page nome-da-pagina
处理路由
- 要使用路由,只需在链接中放置路径即可。
- 假设我们有'product'和'product/form'两个路由用于不同的链接,将如下所示
<a href="/product" >Listar Produtos</a> <a href="/product/form" >Cadastrar Produto</a>
创建子路由
- 对于子路由,我们可以在创建页面时指定路径。
- 例如:如果需要子路由empresa/cadastro,命令如下所示:
composer mob-create-page nome-da-pagina empresa/cadastro
列出路由
- 如果需要列出应用程序的路由,可以使用命令composer mob-list-routes或直接在core/json/routes.json文件中访问它们。
composer list-routes
重命名路由
- 要更改路由名称,请使用命令composer mob-rename-route rota-atual nova-rota
- 例如:如果需要将路由product更改为register,命令如下所示:composer mob-rename-route product register
composer rename-route rota-antiga nova-rota
创建组件
组件的使用提供了一种简单高效的重用代码的方法。
- 请使用以下命令
composer mob-create-component nome-do-componente
- 这将自动在components文件夹中创建组件。
创建的组件结构
-
app
- components
- Novocomponente:组件文件夹
- Novocomponente.controller.php:组件控制脚本
- Novocomponente.css:CSS样式表
- Novocomponente.js:组件JavaScript文件
- Novocomponente.view.php:组件视图
- Novocomponente:组件文件夹
- components
-
要删除组件,我们可以使用remove命令。
composer mob-remove-component nome-do-componente
创建模块
- 模块对于通过请求与后端交互非常有用。
- 模块文件将被创建在modules目录中。
- 请使用以下命令
composer mob-create-module nome-do-módulo
创建的模块结构
- app
- modules
- Novomodulo:模块文件夹
- Novomodulo.controller.php:控制脚本
- Novomodulo.modal.php:模态页面
- Novomodulo:模块文件夹
- modules
CRUD 模块
MOB的CRUD(创建、读取、更新、删除)简化了在MySQL或PostgreSQL数据库中处理数据的过程。这提供了执行这些操作的方法,从而消除了手动编写SQL查询的需要。
数据库配置
在使用CRUD模块之前,您需要在config文件夹中的database.php文件中配置数据库信息。请确保根据您使用的数据库(MySQL或PostgreSQL)提供正确的信息。注意:PostgreSQL当前不可用。
对于mysql部分,请填写"local"字段为您的本地连接数据,并填写"web"字段为您的服务器数据库数据。这样,配置只需要进行一次,从而提供更高效的经验。
// Exemplo de configuração para MySQL 'app_data_type' => 'mysql', 'mysql' => [ 'local' => [ 'driver' => 'mysql', 'host' => 'localhost', 'port' => '3306', 'database' => '', 'username' => '', 'password' => '', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci' ], 'web' => [ 'driver' => 'mysql', 'host' => 'localhost', 'port' => '3306', 'database' => '', 'username' => '', 'password' => '', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci' ] ], // Exemplo de configuração para PostgreSQL 'app_data_type' => 'pgsql', 'pgsql' => [ 'driver' => 'pgsql', 'host' => 'localhost', 'port' => '5432', 'database' => '', 'username' => '', 'password' => '', 'charset' => 'utf8', 'schema' => 'public', ],
使用示例
以下是一个如何在一个MySQL环境中使用CRUD模块的示例。同样的原则适用于PostgreSQL,只需调整数据库配置即可。
<?php use Sql\MySQL; class ExemploCRUD extends MySQL { // Métodos CRUD podem ser implementados aqui } // Exemplo de uso do CRUD MySQL $crud = new ExemploCRUD(); // Inserir um novo registro $dataToInsert = ['campo1' => 'valor1', 'campo2' => 'valor2']; $resultInsert = $crud->insert('nome_tabela', $dataToInsert); echo $resultInsert; // Obter todos os registros $resultSelectAll = $crud->getAll('nome_tabela'); echo $resultSelectAll; // Obter um registro por ID $resultSelectById = $crud->getById('nome_tabela', 'id', 1); echo $resultSelectById; // Atualizar um registro $dataToUpdate = ['campo1' => 'novo_valor1', 'campo2' => 'novo_valor2']; $resultUpdate = $crud->update('nome_tabela', $dataToUpdate, 1); echo $resultUpdate; // Excluir um registro $resultDelete = $crud->delete('nome_tabela', 1); echo $resultDelete;
请确保用您的数据库对应的值替换'nome_tabela'、'campo1'、'campo2'等。
使用自定义 SQL 查询的示例
要执行简单的自定义SQL查询,您可以使用MOB CRUD模块的query方法。以下是一个执行基本SELECT查询的示例。
<?php // Consulta SQL simples $sqlQuerySimples = "SELECT * FROM tabela_exemplo WHERE coluna_condicao = ?"; $queryParamsSimples = ['valor_condicao']; $resultSimples = $crud->query($sqlQuerySimples, $queryParamsSimples); // Exibir os resultados da consulta SQL simples echo $resultSimples;
此示例使用带有条件参数的WHERE执行简单SQL查询。
更复杂的 SQL 查询
对于涉及INNER JOIN、ORDER BY和GROUP BY的复杂查询,您可以按照需要构建。以下是一个结合这些元素的示例。
<?php // Consulta SQL complexa com INNER JOIN, ORDER BY e GROUP BY $sqlQueryComplexa = "SELECT usuarios.nome AS nome_usuario, COUNT(pedidos.id) AS total_pedidos FROM usuarios INNER JOIN pedidos ON usuarios.id = pedidos.id_usuario WHERE usuarios.cidade = ? GROUP BY usuarios.nome ORDER BY total_pedidos DESC"; $queryParamsComplexa = ['Sao Paulo']; $resultComplexa = $crud->query($sqlQueryComplexa, $queryParamsComplexa); // Exibir os resultados da consulta SQL complexa echo $resultComplexa;
在此示例中
- 我们在
usuarios和pedidos表之间执行了一个INNER JOIN。 - 我们使用WHERE子句来根据特定条件(用户的城市)进行过滤。
- 我们应用GROUP BY来计算每个用户的订单总数。
- 我们使用ORDER BY来按订单总数降序排列结果。
所有这些方法的结果都以JSON格式提供,以方便其他语言(如JavaScript)的数据处理。
可用方法
以下是在CRUD模块中可用的方法
insert($table, $data)
将数据插入到表中,并返回一个表示插入成功或失败的JSON。
getAll($table)
获取一个表中的所有记录,并返回一个JSON。
getById($table, $primaryKey, $id)
根据ID获取一个表中的记录,并返回一个JSON。
update($table, $data, $id)
更新一个表中的记录,并返回一个表示更新成功或失败的JSON。
delete($table, $id)
从一个表中删除一个记录,并返回一个表示删除成功或失败的JSON。
query($sql, $params)
执行一个自定义的SQL查询,并返回JSON格式的结果。
请根据您应用程序的具体要求相应地调整示例。这仅是使用MOB中的CRUD模块的初始指南。有关其他方法或高级定制的信息,请参阅MOB的官方文档。
发送电子邮件
要发送电子邮件,首先填写位于Config文件夹中的PhpMailer.php文件。如果您在本地服务器上进行测试,请检查配置是否正确。配置完成后,执行以下命令以确认发送:
composer mob-test-mail email@teste.com.br
将email@teste.com.br替换为您希望接收测试消息的电子邮件地址。
使用模板发送电子邮件
使用 JavaScript 发送请求
为了简化通过POST或GET在JavaScript中发送请求的过程,我推荐使用Mobi-Request库。这个小型库默认已预安装在MOB中。[文档][https://github.com/jandersongarcia/mobiRequest]
贡献
欢迎贡献!请随时提出问题或发送pull requests来改进MOB PHP。
许可证
此项目受MIT许可证许可。
