xervice/data-provider

2.8.0 2023-10-20 13:13 UTC

README

Scrutinizer Code Quality Code Coverage Build Status

xervice包的数据传输对象。

安装

composer require xervice/data-provider

配置

您需要定义搜索模式文件的位置以及创建DTO的位置。

<?php

use Xervice\DataProvider\DataProviderConfig;

$config[DataProviderConfig::FILE_PATTERN] = '*.dataprovider.xml'; // Default: *.dataprovider.xml
$config[DataProviderConfig::DATA_PROVIDER_GENERATED_PATH] = dirname(__DIR__) . '/src/Generated';
$config[DataProviderConfig::DATA_PROVIDER_PATHS] = [
    dirname(__DIR__) . '/src/',
    dirname(__DIR__) . '/vendor/',
];

在示例中,它将搜索所有类似 *.dataprovider.xml 的文件。

定义DTO

要定义数据提供者,您需要在XML文件中定义它们。

示例

<?xml version="1.0"?>

<DataProviders
  xmlns="xervice:dataprovider-01"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="xervice:dataprovider-01 http://static.xervice.online/schema/dataprovider.schema.xsd"
>

    <DataProvider name="KeyValue">
        <DataElement name="Key" type="string"/>
        <DataElement name="Value" type="string"/>
    </DataProvider>
</DataProviders>

可能的数据类型

  • int
  • string
  • bool
  • double (= float)
  • float
  • array
  • object
  • DataProviderInterface
  • DataProviderInterface[]
  • AnyNameOfDataProvider

使用类型 "DataProviderInterface" 您可以设置任何 DataProvider。

默认值 您可以为以下类型定义默认值

  • int
  • float
  • double
  • string
  • bool
  • array

对于数组类型,默认值只能是一个空数组。如果您想将空字符串作为字符串类型的默认值,您必须将默认值设置为 ''。

<?xml version="1.0"?>

<DataProviders
  xmlns="xervice:dataprovider-01"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="xervice:dataprovider-01 http://static.xervice.online/schema/dataprovider.schema.xsd"
>

    <DataProvider name="Default">
        <DataElement name="String" default="Text" type="string"/>
        <DataElement name="EmptyText" default="''" type="string"/>
        <DataElement name="Number" default="5" type="int"/>
        <DataElement name="Boolean" default="true" type="bool"/>
        <DataElement name="Float" default="1.5" type="float"/>
        <DataElement name="List" default="[]" type="array"/>
    </DataProvider>

</DataProviders>

使用DTO

    $dataProvider = new DataProvider\KeyValueDataProvider();

    // Set values
    $dataProvider->setKey('keyname');
    $dataProvider->setValue('value');

    // Get values
    $dataProvider->getKey();

    // Isset
    $dataProvider->hasKey();
    
    // you can also work with arrays
    $dataProvider->fromArray([
        'Key' => 'keyname',
        'Value' => 'value'
    ]);
    
    // and back to array
    $dataArray = $dataProvider->toArray();

扩展和共享

具有相同 DataProvider 名称的多个模式文件将被合并。您还可以选择其他 DataProvider 作为类型或集合。

<?xml version="1.0"?>

<DataProviders
  xmlns="xervice:dataprovider-01"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="xervice:dataprovider-01 http://static.xervice.online/schema/dataprovider.schema.xsd"
>

    <DataProvider name="KeyValue">
        <DataElement name="Key" type="string"/>
        <DataElement name="Values" singleton="Value" type="Value[]"/>
    </DataProvider>
</DataProviders>

使用

<?php

    $dto = new KeyValue();

    $value = new Value();
    $dto->addValue($value);

    // List
    $dto->setValues(
        [
            $value
        ]
    );

    // Get List
    $dto->getValues();