widefocus / feed-source
此包包含提供数据源模型的工具。
1.0.0
2017-04-27 08:43 UTC
Requires
- php: ^7.0
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is not auto-updated.
Last update: 2024-09-20 22:01:31 UTC
README
此包包含用于使用数据源的模型。
身份源
身份源提供身份信息。这通常是一个数据库中主键的列表。
<?php use WideFocus\Feed\Source\IdentitySourceInterface; /** @var IdentitySourceInterface $idSource */ $idSource = new CustomIdSource(); $entityIds = $idSource->getEntityIds();
值源
值源为身份提供值。这些值针对单个属性进行检索。
<?php use WideFocus\Feed\Source\ValueSourceInterface; /** @var ValueSourceInterface $valueSource */ $valueSource = new CustomValueSource(); $names = $valueSource->getEntityValues($entityIds, 'name');
源条件
可以通过条件过滤身份。条件根据身份决定是否将项目用于数据源。它通过自身收集项目数据,例如使用值源。
<?php use WideFocus\Feed\Source\Condition\SourceConditionInterface; /** @var SourceConditionInterface $condition */ $condition = new CustomCondition(); $condition->prepare($entityIds); foreach ($entityIds as $entityId) { if ($condition->matches($entityId)) { // The entity is validated. } }
使用 SourceConditionCombination 创建条件的组合。
源字段
源字段为数据源项目提供数据。它始终获取单个属性的数据。它可以自行获取数据,例如使用值源。
<?php use WideFocus\Feed\Source\Field\SourceFieldInterface; /** @var SourceFieldInterface $field */ $field = new CustomField(); $field->prepare($entityIds); foreach ($entityIds as $entityId) { $item = new ArrayObject(); $item->offsetSet( 'name', $field->getValue($entityId) ); // The name has been set on the item. }
使用 SourceFieldCombinationInterface 创建字段的组合。
源迭代器
此包提供了一些迭代器,可以在源上应用条件和字段。
身份源迭代器
身份源迭代器遍历身份源中的值。
<?php use WideFocus\Feed\Source\Iterator\IdentitySourceIterator; $identityIterator = new IdentitySourceIterator($idSource); foreach ($identityIterator as $identity) { // An identity. }
验证身份迭代器
验证身份迭代器在遍历时根据条件验证身份。它只返回符合条件身份。
<?php use WideFocus\Feed\Source\Condition\SourceConditionInterface; use WideFocus\Feed\Source\Iterator\ValidatedIdentityIterator; /** @var SourceConditionInterface $conditions */ $condition = new CustomCondition(); $validatedIterator = new ValidatedIdentityIterator( $identityIterator, $condition, 500 ); foreach ($validatedIterator as $identity) { // A validated identity. }
身份到项目迭代器
身份到项目迭代器在遍历时将身份转换为带有值的项。返回的项是 ArrayAccess 的实例。
<?php use WideFocus\Feed\Source\Field\SourceFieldCombinationInterface; use WideFocus\Feed\Source\Field\SourceFieldCombination; use WideFocus\Feed\Source\Iterator\IdentityToItemIterator; /** @var SourceFieldCombinationInterface $fields */ $fields = new SourceFieldCombination([]); $idToItemIterator = new IdentityToItemIterator( $identityIterator, $fields, 500 ); foreach ($idToItemIterator as $item) { // An item with values. }
组合迭代器
可以使用源迭代器工厂创建组合迭代器。它返回一个迭代器,从身份源获取值,验证它们并将它们转换为带有值的项。
<?php use WideFocus\Feed\Source\IdentitySourceInterface; use WideFocus\Feed\Source\Condition\SourceConditionCombinationInterface; use WideFocus\Feed\Source\Field\SourceFieldCombinationInterface; use WideFocus\Feed\Source\Iterator\SourceIteratorFactory; /** @var IdentitySourceInterface $idSource */ $idSource = new CustomSource(); /** @var SourceConditionCombinationInterface $conditions */ $conditions = new CustomConditionCombination(); /** @var SourceFieldCombinationInterface $fields */ $fields = new CustomFieldCombination(); $factory = new SourceIteratorFactory(500); $iterator = $factory->create( $idSource, $conditions, $fields ); foreach ($iterator as $item) { // A validated item with values. }