jeyroik/extas-repo-toolkit 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

jeyroik/extas-repo-toolkit

最新稳定版本:0.1.0

Composer 安装命令:

composer require jeyroik/extas-repo-toolkit

包简介

Toolkit for simplifying working with Extas repositories

README 文档

README

Tool KIt for Extas repositories

PHP Composer codecov.io Latest Stable Version Total Downloads Dependents

usage

Typically you'll use this package in an extas.storage configuration with the jeyroik/extas-config-php plugin.

So as precondition you have an extas.storage.php (or a extas.app.storage.php):

return [
    //...,
    'tables' => [
        "my_entities" => [
            "namespace" => "repositories",
            "item_class" => "\\myvendor\\components\\myentities\\MyEntity",
            "pk" => "id",
            "code" => [
                
            ]
        ],
    ]
];

Current tollkit is supposed to use in the code section, see examples below.

generate uuid for an item

use extas\components\repositories\tools\RepoItem
return [
    //...,
    'tables' => [
        "my_entities" => [
            "namespace" => "repositories",
            "item_class" => "\\myvendor\\components\\myentities\\MyEntity",
            "pk" => "id",
            "code" => [
                // if your item implements extas\interfaces\IHaveUUID, if not, please use ::setUuid($item, 'id_field_name')
                "create-before" => '\\' . RepoItem::class . '::setId($item);'
            ]
        ],
    ]
];

check item existing

use extas\components\repositories\tools\RepoItem
return [
    //...,
    'tables' => [
        "my_entities" => [
            "namespace" => "repositories",
            "item_class" => "\\myvendor\\components\\myentities\\MyEntity",
            "pk" => "id",
            "code" => [
                "create-before" => '\\' . RepoItem::class . '::throwIfExist($this, $item, [\'fieldName\']);'
            ]
        ],
    ]
];

check required fields

use extas\components\repositories\tools\RepoItem
return [
    //...,
    'tables' => [
        "my_entities" => [
            "namespace" => "repositories",
            "item_class" => "\\myvendor\\components\\myentities\\MyEntity",
            "pk" => "id",
            "code" => [
                "create-before" => '\\' . RepoItem::class . '::require($item, [\'fieldName\']);'
            ]
        ],
    ]
];

hashing item field

use extas\components\repositories\tools\RepoItem
return [
    //...,
    'tables' => [
        "my_entities" => [
            "namespace" => "repositories",
            "item_class" => "\\myvendor\\components\\myentities\\MyEntity",
            "pk" => "id",
            "code" => [
                "create-before" => '\\' . RepoItem::class . '::sha1($item, [\'fieldName\']);'
            ]
        ],
    ]
];

encrypting item field

use extas\components\repositories\tools\RepoItem
return [
    //...,
    'tables' => [
        "my_entities" => [
            "namespace" => "repositories",
            "item_class" => "\\myvendor\\components\\myentities\\MyEntity",
            "pk" => "id",
            "code" => [
                // openssl with key encrypting is used by default, you can determ another way by passing third param
                // see Encryption section below
                "create-before" => '\\' . RepoItem::class . '::encrypt($item, [\'fieldName\']);',
                "one-after" => '\\' . RepoItem::class . '::decrypt($item, [\'fieldName\'])'
            ]
        ],
    ]
];

combine several checks at once

use extas\components\repositories\tools\RepoItem
return [
    //...,
    'tables' => [
        "my_entities" => [
            "namespace" => "repositories",
            "item_class" => "\\myvendor\\components\\myentities\\MyEntity",
            "pk" => "id",
            "code" => [
                "create-before" => '\\' . RepoItem::class . '::multiple($this, $item, [\'setId\' => '',...]);'
            ]
        ],
    ]
];

Don't forget you can move hard code into another file and attach it:

//resources/multicheck.php
/*
 * @var IItem $item
 * @var IRepository $this
 */

return RepoItem::multiple($this, $item, [
    'setId' => ['field1'],
    'require' => ['field1', 'field2'],
    'throwIfExist' => ['field1'],
    //...
]);

//extas.storage.php
use extas\components\repositories\tools\Injector
return [
    //...,
    'tables' => [
        "my_entities" => [
            "namespace" => "repositories",
            "item_class" => "\\myvendor\\components\\myentities\\MyEntity",
            "pk" => "id",
            "code" => [
                "create-before" => Injector::get('/resources/multicheck')
            ]
        ],
    ]
];

统计信息

  • 总下载量: 27
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2023-06-06