PHPackages                             uniondrug/structs - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Caching](/categories/caching)
4. /
5. uniondrug/structs

ActiveLibrary[Caching](/categories/caching)

uniondrug/structs
=================

Uniondrug Struct Component for uniondrug/framework

2.14.8(4y ago)17.3k3proprietaryPHP

Since Feb 27Pushed 4y ago2 watchersCompare

[ Source](https://github.com/uniondrug/structs)[ Packagist](https://packagist.org/packages/uniondrug/structs)[ RSS](/packages/uniondrug-structs/feed)WikiDiscussions 2.x Synced 3d ago

READMEChangelog (10)Dependencies (2)Versions (28)Used By (3)

Structs component for uniondrug/framework
=========================================

[](#structs-component-for-uniondrugframework)

结构体工具，用于构造数据结构，规范代码和服务之间的数据交互。

使用场景
----

[](#使用场景)

主要目的是保证在应用中间的业务逻辑层使用统一的结构化数据进行交互，并且保证数据安全可信。

- 控制器接收用户端的输入数据；
- 将数据库Model获取的数据转换为结构体，去掉Model本身的数据操作能力，避免误操作；

安装
--

[](#安装)

```
$ cd project-home
$ composer require uniondrug/structs
```

修改 `app.php` 配置文件，加上StructManager服务。服务名称：`structManager`。

```
return [
    'default' => [
        ......
        'providers'           => [
            ......
            \Uniondrug\Structs\StructManagerServiceProvider::class,
        ],
    ],
];
```

使用
--

[](#使用)

### 定义结构体

[](#定义结构体)

结构体定义了一个数据结构的构成，其属性支持的类型包括标量：`string`/`int`(`integer`)/`boolean`(`bool`)/`float`(`double`)、另一个结构体，或者是由同一类标量、结构体构成的数组。

1、通过属性注释的`@var`注解来定义一个属性的类型；

2、当属性是数组的时候，在类型后面加上`[]`标识；

3、当属性需要设置成只读的时候，使用修饰符`protected`，为了使IDE友好，可以在类注释中添加`@property`注解；

4、如果属性没有设置类型，默认是`string`类型；

> 注意：属性是数组时，其元素必须是一个结构体，或者是相同类型的标量。是标量类型则必须指定是何种类型，比如：`string[]`,`int[]`。

```
