模块化对象构建器

安装: 8

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:项目

1.0.1 2024-04-02 20:58 UTC

This package is auto-updated.

Last update: 2024-09-06 13:24:44 UTC


README

MOB

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 进行开发之前,确保您的机器满足以下环境需求,按重要性排序:

  1. PHP:MOB 基于PHP;请确保您的机器已安装PHP。我们推荐使用7.2或更高版本。您可以从php.net下载PHP。

    # Verifique se o PHP está instalado
    php --version
  2. Composer:Composer是管理MOB依赖项的必要工具。请确保您的机器已安装Composer。您可以从getcomposer.org下载Composer。

    # Verifique se o Composer está instalado
    composer --version
  3. 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
  4. 数据库(MySQL或PostgreSQL):如果您正在使用数据库,请确保您的机器已正确安装并配置了MySQL或PostgreSQL。您可以从mysql.com下载MySQL或从postgresql.org下载PostgreSQL。

  5. 数据库配置:在安装数据库后,请确保在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:初始化文件。
  • 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.jsoncomposer.lock:Composer配置和版本锁定。

  • index.php:应用程序入口点。

  • package-lock.jsonpackage.json:Node.js配置。

  • robots.txt:机器人排除文件。

依赖和库

MOB使用以下库和依赖项,其中一些直接集成

使用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:页面视图
  • 删除页面,请使用以下命令。

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:组件视图
  • 要删除组件,我们可以使用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:模态页面

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;

在此示例中

  • 我们在usuariospedidos表之间执行了一个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许可证许可。