定制 jeyroik/extas-repo-toolkit 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱: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
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

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

其他信息

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

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固