centras/php-common

微服务的通用包

dev-main 2022-08-18 06:42 UTC

This package is auto-updated.

Last update: 2024-09-30 02:00:09 UTC


README

PHP-Common - 包含所有微服务通用功能的包。

功能

  • 实用工具

内容

安装

  1. 在您的项目根目录下创建 auth.json 文件。添加 access-token。更多信息请参阅 此处。别忘了将文件 auth.json 添加到 gitignore
  {
    "gitlab-token": {
        "git.cic.kz": "your_token"
    }
  }
  1. 执行以下命令
composer config gitlab-domains git.cic.kz
composer config repositories.git.cic.kz/86 '{"type": "composer", "url": "https://git.cic.kz/api/v4/group/86/-/packages/composer/packages.json"}'

执行命令后,文件 composer.json 应出现以下记录

  "config": {
    ...
    "gitlab-domains": ["git.cic.kz"]
  }
  "repositories": [{
          "type" : "composer",
          "url"  : "https://git.cic.kz/api/v4/group/86/-/packages/composer/packages.json"
  }],
  1. 通过 composer 安装包
  $ composer req centras/php-common:1.0.1
  1. 转到 bootstrap/app.php 并将标准 Handler 替换为 phpcommon/Handler/Handler::class
  $app->singleton(
      Illuminate\Contracts\Debug\ExceptionHandler::class,
      phpcommon\Handler\Handler::class
  );
  1. bootstrap/app.php 中注册全局 Middleware(如有必要)
 $app->middleware([
      phpcommon\Middleware\AccessLevelMiddleware::class,
      phpcommon\Middleware\UserMiddleware::class
 ]);
  1. 在 app/Console/Kernel.php 中注册 Heartbeat 的 Schedule
 $schedule->call(function () {
     Scheduler::heartbeat();
 })->everyMinute();

不要忘记导入 Scheduler (use phpcommon\Utils\Scheduler)

QueryBuilder

查询构建器 - 用于过滤、分页、排序由查询返回的数据的实用工具。构建器接受多个静态参数。

允许选择模型特定的列。如果指定了错误的列,将抛出相应的异常。

参数: columns

  • /users?columns=email,uuid,first_name
"data": {
"email": "Emanuel.Schowalter@hotmail.com",
"uuid": "113eb3b3-2554-464d-9224-62e61c930f1a"
"first_name": "Emanuel"
}

允许选择模型特定的列。如果指定了错误的列,将抛出相应的异常。

参数: columns

  • /users?columns=email,uuid,first_name
{
  "email": "Emanuel.Schowalter@hotmail.com",
  "uuid": "113eb3b3-2554-464d-9224-62e61c930f1a"
  "first_name": "Emanuel"
}

类似的特性也适用于关联依赖。

  • /users?columns=email,social_networks.name,social_networks.url
{
  "email": "Emanuel.Schowalter@hotmail.com",
  "social_networks": [
    {
      "name": "Telegram",
      "url": "https://telegram.org"
    }
  ]
}

包含

允许选择模型特定的依赖。如果指定了错误的关联,将抛出相应的异常。

参数: includes

  • /users?includes=social_networks
{
  "email": "Emanuel.Schowalter@hotmail.com",
  "uuid": "113eb3b3-2554-464d-9224-62e61c930f1a"
  "first_name": "Emanuel",
  "social_networks": [
    {
      "id": 1,
      "name": "Twitter",
      "url": "https://twitter.com/"
    }
  ]
}

限制

限制可以确定每页的记录数。默认值:15条记录。

参数: limit

  • /users?limit=5

页码

与限制一起使用,定义页码。允许将大量数据分成具有固定记录数的页面。默认值:15条记录。

参数: page

  • /users?page=1

排序

允许确定记录的顺序。

参数: order_by

  • /users?order_by=id:asc,uuid:desc

过滤

允许过滤输入数据。

参数: 动态 参数键是列名。

过滤查询示例

  • /users?first_name=Emanuel
  • /users?first_name!=Emanuel
  • /users?first_name=*uel
  • /users?first_name=Em*
  • /users?first_name=*an*
  • /users?balance=1.546
  • /users?balance=<2.55
  • /users?balance=>1.699
  • /users?balance<2.45
  • /users?balance>1.324
  • /users?first_name=[null]
  • /users?first_name!=[null]