abnermouke/easy-builder

EasyBuilder是一个开源的构建工具包,安装非常简单,因为它是一个标准的Composer包,这意味着只要当前Laravel版本大于6.0都可以使用它。

1.3.3 2023-04-26 06:08 UTC

This package is auto-updated.

Last update: 2024-03-26 08:24:08 UTC


README

Power By Abnermouke abnermouke@outlook.com

此工具包由 Abnermouke abnermouke@outlook.com 开发并维护。

最后更新时间:2023年02月28日,持续更新中!!!

Requirement - 环境要求

  1. PHP >= 7.2(建议安装7.4)
  2. Composer
  3. Laravel Framework 6+

Installation - 安装方法

$ composer require "abnermouke/easy-builder"

Configuration - 配置

  • config/app.phpproviders注册服务提供者
Abnermouke\EasyBuilder\EasyBuilderServiceProvider::class,
  • 如果你想只在非production的模式中使用构建器功能,可在AppServiceProvider中进行register()配置
public function register()
{
  if ($this->app->environment() !== 'production') {
      $this->app->register(\Abnermouke\EasyBuilder\EasyBuilderServiceProvider::class);
  }
  // ...
}
  • 构建工具提供一配置文件帮助开发者自行配置自己的构建配置,导出命令:
php artisan vendor:publish --provider="Abnermouke\EasyBuilder\EasyBuilderServiceProvider"
  • 添加通用中间件至 app/Http/Kernel.php (如需在指定路由使用中间件,请将内容填充至 $routeMiddleware 内,并标记标识):
protected $middleware = [
    
    ///
   
    \App\Http\Middleware\Abnermouke\EasyBuilderBaseMiddleware::class,
];
  • 执行初始化构建器命令:
php artisan builder:init
  • 添加辅助函数自动加载至 composer.json
     "autoload": {
       
       // 
        
        "files": [
            "app/Helpers/functions.php",
            "app/Helpers/helpers.php",
            "app/Helpers/auth.php",
            "app/Helpers/response.php",
            "app/Helpers/projects.php"
        ]
    },
  • 执行 Composer Autoload 以生效辅助函数
composer dump-autoload
  • 更改数据库严格模式(兼容GroupBy查询 Mysql5.7)configs/database.php
     "mysql" => [
        
        //关闭严格模式
        "strict" => false
        
     ],

How to use it - 怎么使用

Abnermouke 提供了一些高效的构建命令帮助开发者快速使用构建器

$ php artisan builder:package {your-table-name-without-db-prefix}

例如:

$ php artisan builder:package accounts

生成accounts相关的系列文件信息。

Extends Tool - 更多高效工具

Abnermouke 致力于规范开发标准、减少编码量,每一串代码都能成为可观的艺术品,在 easybuilder 中Abnermouke已将自身经验所得开发应用目录结构录入,并希望对使用此扩展包的开发人员也能起到一定的建议/引导作用。

[ Command ] builder:interface
$ php artisan builder:interface {your-table-name-without-db-prefix}

builder:interface 为 package 的延伸工具,主要使用于多端适配目录结构,例如:当前项目共有小程序、APP、H5、管理后台等前端入口,数据库都为公用,以往我们或许会在Http/Controllers中进行目录区分,但仍需手动创建区分目录,更有甚者多端controller都是公用的情况

由于package构建后将在Http/Controllers中创建默认controller文件,目录结构已存在,为避免误解以及后期维护难度增大,现建议将各端入口更换至app/Interfaces中操作,可自定义目录结构,同时根据数据库表信息可以生成多个多端的controller以及service

其使用方法与package执行一致,但流程更加简化,只需录入数据库表名、表注释以及你要存储的目录即可,执行成功后将在指定目录生成:


app/Interfaces/指定目录/Controllers/YourTableController

app/Interfaces/指定目录/Services/YourTableInterfaceService

Controller将用于接受该端路由请求,Interface为该端业务逻辑处理器,作用等同于Service

多端开发中建议将app\Services中逻辑服务容器作为公共逻辑处理器,各端由自身Interface中service处理

命令如下:

$ php artisan builder:interface accounts
[ Tool ] SearchableTool 关键词检索类

SearchableTool 是 easybuilder 对外提供的高效工具,仅对外开放set/search两方法,set为设置关键词,search为搜索,在调用过程中,easybuilder 将在项目中自动生成 acb_search_keywords 表用于储存关键词信息,数据库信息支持无限扩展,可同时对多个对象进行检索结构预存。

操作如下:


// 设置关键词(goods代表储存对象为商品,GOODS_ID为对应商品ID)
SearchableTool::set('goods', GOODS_ID, ['keyword_1', 'keyword_2']);

// set方法传参可理解为:设置商品的GOODS_IDS这个商品需绑定keyword_1、keyword_2两个关键词,在执行search时,只要是搜索商品,存在keyword_1、keyword_2任意一项时将输出GOODS_ID


//搜索关键词(goods代表储存对象为商品,搜索词检索后将返回满足任意关键词的所有商品ID)
SearchableTool::search('goods', ['keyword_1', 'keyword_3']);

无限扩展,可对文章、店铺等等一系列需要全文检索进行储存,关键词文本建议使用 easybuilder 中 JiebaLibrary 处理为多个关键词,以增加检索成功率

[ Tool ] SentenceTool 语录/句子构建处理工具

SentenceTool 是 easybuilder 提供的一个小工具,仅需执行run方法即可获取金山词霸每日一句数据,包含中文英文鸡汤,创意小工具,根据自身需要选择使用即可

调用时,同样 easybuilder 将在项目中自动生成 acb_sentences 表用于储存此条信息,开发者可使用 app/Repository/Abnermouke/Builders/SentenceRepository.php 查询

[Tool] InterfaceCryptographyTool 接口加密处理工具

InterfaceCryptographyTool 是一套完整的php端加解密解决方案,除验签加密外同时嵌套非对称加密,所有验证/加密过程均为自动完成,仅需配置指定APP与RSA2密钥即可

更新记录

2020.10.16 - 新增结巴分词相关处理逻辑(Abnermouke\EasyBuilder\Library\Currency\JiebaLibrary),请在使用前执行命令:

composer require fukuball/jieba-php

2020.10.16 - 新增php-DFA-filterWord相关处理逻辑(Abnermouke\EasyBuilder\Library\Currency\SensitiveFilterLibrary),请在使用前执行命令:

composer require lustre/php-dfa-sensitive

2021.09.16 - 修复已知BUG,重构builder组件,支持多层级目录(不限层级)并新增部分常用验证规则(Abnermouke\EasyBuilder\Library\Currency\ValidateLibrary),新增RSA非对称加解密方法,仅需配置内部私钥与外部公钥即可自动进行RSA加解密(可无损更新),请在使用前确保openssl可用:

2021.10.22 - 修复加解密浮点数/数字等加密结果有误问题,新增 JSON_NUMERIC_CHECK|JSON_PRESERVE_ZERO_FRACTION 两种flag处理

composer require ext-openssl

2022.03.12 - 新增诸多功能

  • 新增 AesLibrary Aes加解密公共类,解析表单加密结果
  • 新增 SignatureLibrary 验签公共类,提供create(创建)、verify(验证)方法快捷生成/验证签名
  • 新增更多实用辅助函数
  • 新增abort_error辅助函数,快速响应错误页面
  • 新增 Repository 公共方法 uniqueCode 可生成唯一类型编码(md5、string、number等)
  • 新增 SearchableTool 工具类,用于关键词检索,文本录入后将关键词与文本对象关联,可实现多对多高效检索(自动过滤违禁词),自带学习功能,根据项目需求自动调整和记录检索对象

2022.03.31 - 新增诸多功能

  • 新增AmapLibrary 高德地图处理公共类,获取高德相关接口
  • 新增DeviceLibrary 设备检测公共类,快捷检测当前设备类型
  • 新增QrLibrary 基于 "simplesoftwareio/simple-qrcode" 快速生成指定二维码文件至指定storage目录
  • 新增StorageFileLibrary Storage文件处理公共类,快捷处理Storage文件等操作

2022.04.05 - 主要增加与abnermouke/console-builder的适配

  • 新增对Laravel6的支持,LTS版本已完美适配,Laravel9及其之后的版本待官方稳定后兼容适配
  • 新增 七牛SDK为默认加载包,并在 StorageFileLibrary 中新增对七牛云的快捷操作(上传、删除)
  • 新增默认 TestCommand,可在 app/Console/Commands/TestCommand 添加开发测试,命令:php artisan test:test

2022.06.18 - 修复已知问题

  • 修复所有涉及GroupBy查询无效的问题
  • 新增count查询携带groupBy查询条件

2022.07.23 - 修复已知问题并带来更多更新

  • 修复Storage文件处理时可能存在的文件名问题,杜绝空格等因素存在
  • 新增builder命令:builder:interface,适用于多设备应用开发,可将统一表针对不同端自动生成service以及controller
  • 新增 SentenceTool 工具类,用于爬取每日词条使用,鸡汤文本
  • 新增与 abnermoke/pros 构建框架的适配
  • 新增 InterfaceCryptographyTool 工具类,用于接口端加密/解密使用,内含基本验签加密、RSA加密

2022.07.25 - 修复问题

  • 修复批量执行 builder:package 时中途更换db_prefix失效的问题,单一执行不影响
  • 修复 SentenceTool 本地localhost请求失败问题

2022.08.05 - 优化并提供更多支持

  • 优化 builder:interface 配合 abnermouke/pros 可快速生成控制台接口逻辑、路由以及blade模版,增效降码
  • 新增 ValidateLibrary 检测是否包含HTML方法
  • 新增 BaseRepository 自动生成全大写唯一编码
  • 进一步适配 abnermouke/pros 包

2022.08.30 - 新增支持

  • 新增 ValidateLibrary 检测微信浏览器方法

2022.09.13 - 新增藏库

  • 新增 PictureLibrary 便携处理水印(图片、文字)拼合成自定义图片

2022.09.16 - 优化功能

  • 新增 hidden_email_or_mobile 对银行卡号的支持
  • 优化 pros 快速生成 interface 架构服务逻辑

2022.10.10 - 新增辅助函数

  • 新增 existArr、xmlToArray、amount_to_price 辅助函数

2022.10.22 - 新增藏库

-新增 ToolLibrary 系统常用辅助方法集合(持续更新:ToolLibrary:: 即可快捷调用)

2023.02.28 - 修复问题

-新增 ToolLibrary 金额百分比计算方法amountPercentCompute -新增BaseRepository处理能力,新增复杂计算时可使用selectRaw查询内容

License

MIT