xervice / data-provider
2.8.0
2023-10-20 13:13 UTC
Requires
- php: >=7.2.0
- nette/php-generator: ^3.0.0
- symfony/finder: ^3.4|^4.0|^5.0|^6.3
- xervice/console: ^2.0.0
- xervice/core: ^4.0.0
Requires (Dev)
- codeception/codeception: *
- phpstan/phpstan: ^0.12.0
- symfony/var-dumper: *
README
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();