germania-kg / salesmen
使用销售人员ID:接口、特性、FilterIterator
2.2.2
2022-03-30 10:16 UTC
Requires
- php: ^7.0
- germania-kg/retailers: ^1.2|^2.0
- psr/container: ^1.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.0
- phpunit/dbunit: ^2.0|^3.0
- phpunit/phpunit: ^6.0
README
安装
$ composer require germania-kg/salesmen
接口
salesman_id_provider_interface
public function getSalesmanId()
salesman_id_aware_interface
extends SalesmanIdProviderInterface public function setSalesmanId( $id )
特性
salesman_id_provider_trait
使用此特性的对象将提供一个 salesman_id
属性和一个 getSalesmanId
获取器方法,如以下所示
public $salesman_id; public function getSalesmanId()
salesman_id_aware_trait
使用此特性的对象将提供 salesman_id_provider_trait 提供的所有内容,并额外提供一个接受任何值的 setSalesmanId
设置器方法;如果提供了 salesman_id_provider_interface,则将调用 getSalesmanId 方法来获取要使用的ID。大致概述
use SalesmanIdProviderTrait; public function setSalesmanId( $salesman )
示例
<?php use Germania\Salesmen\SalesmanIdProviderInterface; use Germania\Salesmen\SalesmanIdProviderTrait; class Salesman implements SalesmanIdProviderInterface { use SalesmanIdProviderTrait; public function __construct( $salesman_id ) { $this->salesman_id = $salesman_id; } } $salesman = new Salesman( 99 ); echo $salesman->getSalesmanId(); // 99
<?php use Germania\Salesmen\ SalesmanIdAwareInterface; use Germania\Salesmen\SalesmanIdAwareTrait; class MyOrder implements SalesmanIdAwareInterface { use SalesmanIdAwareTrait; } $order = new MyOrder; $order->setSalesmanId( 34 ); echo $order->getSalesmanId(); // 34
salesman_filter_iterator
salesman_filter_iterator 类接受任何 Iterator 集合以及一个销售人员ID(或ID数组)或 SalesmanIdProviderInterface 实例以进行过滤。不是 SalesmanIdProviderInterface 实例的集合项始终被忽略。
迭代器
- SalesmanIdProviderInterface 的实例
过滤值
- 整数或字符串ID
- 整数或字符串ID的数组
- 一个 SalesmanIdProviderInterface 实例 - 也请参阅问题 #1
示例
<?php use Germania\Salesmen\SalesmanFilterIterator; // Prepare some SalesmanIdProviderInterface instances: $order1 = new MyOrder; $order1->setSalesmanId( 1 ); $order2 = new MyOrder; $order2->setSalesmanId( 20 ); $order3 = new MyOrder; $order4->setSalesmanId( 999 ); $orders = [ $order1, $order2, $order3 ]; // --------------------------------------- // Filter by ID or ID array: // --------------------------------------- // should be '1' $filter = new SalesmanFilterIterator( new \ArrayIterator( $orders ) , 20); echo iterator_count($filter); // should be '2' $filter = new SalesmanFilterIterator( new \ArrayIterator( $orders ), array(20, 999)); echo iterator_count($filter); // --------------------------------------- // Filter by SalesmanIdProviderInterface: // --------------------------------------- $salesman = new Salesman( 1 ); $filter = new SalesmanFilterIterator( new \ArrayIterator( $orders ), $salesman); // should be '1' echo iterator_count($filter);
问题
- SalesmanFilterIterator 也应接受一个 SalesmanIdProviderInterface 实例数组作为过滤值。请参阅问题 #1。
也请参阅完整问题列表。
开发
$ git clone https://github.com/GermaniaKG/Salesmen.git
$ cd Salesmen
$ composer install
单元测试
要么将 phpunit.xml.dist
复制到 phpunit.xml
并根据您的需求进行修改,要么保持不变。像这样运行 PhpUnit
$ composer test # or $ vendor/bin/phpunit