germania-kg/vatidno

增值税识别号接口和特性。

1.3.0 2023-01-03 14:25 UTC

This package is auto-updated.

Last update: 2024-08-30 01:08:04 UTC


README

处理增值税识别号的接口、特性和过滤器

Packagist PHP version Tests

安装

$ composer require germania-kg/vatidno

接口

VatIdNoProviderInterface

提供一个名为 VatIdNo 的方法来检索增值税识别号(作为字符串)。

use Germania\VatIdNo\VatIdNoProviderInterface;

/**	
 * @return string
 */
public function getVatIdNo();

VatIdNoAwareInterface

扩展 VatIdNoProviderInterface 并提供一个名为 setVatIdNo 的方法,允许您设置增值税识别号。

use Germania\VatIdNo\VatIdNoProviderInterface;

/**	
 * @param  string $vatin
 * @return self
 */
public function setVatIdNo( $vatin );
public function getVatIdNo();

特性

VatIdNoProviderTrait

实现 VatIdNoProviderInterface 并提供一个公共属性 vatin:

use Germania\VatIdNo\VatIdNoProviderInterface;
use Germania\VatIdNo\VatIdNoProviderTrait;

class MyClass implements VatIdNoProviderInterface {

	use VatIdNoProviderTrait;
	
	public function __construct( $vatin ) {
		$this->vatin = $vatin;
	}
}

VatIdNoAwareTrait

实现 VatIdNoAwareInterface。利用 VatIdNoProviderTrait

use Germania\VatIdNo\VatIdNoAwareInterface;
use Germania\VatIdNo\VatIdNoAwareTrait;

class MyClass implements VatIdNoAwareInterface {
	use VatIdNoAwareTrait;
}

// Simple example
$object1 = new MyClass;
$object1->setVatIdNo( "XY000000" );

// Fluent interface
echo $object1->setVatIdNo( "XY000000" )->vatin;

// Setting using VatIdNoProviderInterface
$object2 = new MyClass;
$object2->setVatIdNo( $object1 );

过滤器

WithVatIdNoFilterIterator

用于筛选提供增值税识别号的记录。这些可能是

  • 包含 vatin 键且值非空的数组
  • 包含 vatin 属性且值非空的对象
  • 实现 VatIdNoProviderInterface 的实例,其中 getVatIdNo 返回非空结果
<?php
use Germania\VatIdNo\Filters\WithVatIdNoFilterIterator;

$records = new \ArrayIterator( ask_database() );

// Allow custom field names in arrays or objects
$records_with_vatin = new WithoutVatIdNoFilterIterator( $records );
$records_with_vatin = new WithoutVatIdNoFilterIterator( $records, "ust_id" );

foreach( $records_with_vatin as $item):
 // Do things like validating
endforeach;

WithoutVatIdNoFilterIterator

用于筛选未提供增值税识别号的记录。这些可能是

  • 缺少 vatin 键或 vatin 元素为空的数组
  • 缺少 vatin 属性或 vatin 属性为空的对象
  • 实现 VatIdNoProviderInterface 的实例,其中 getVatIdNo 返回空结果
<?php
use Germania\VatIdNo\Filters\WithoutVatIdNoFilterIterator;

$records = new \ArrayIterator( ask_database() );

// Allow custom field names in arrays or objects
$records_lacking = new WithoutVatIdNoFilterIterator( $records );
$records_lacking = new WithoutVatIdNoFilterIterator( $records, "ust_id" );

foreach( $records_lacking as item):
 //...
endforeach;

验证

要验证增值税识别号,请使用专门的包,例如 David de Boer 的 ddeboer/vatin

开发

$ git clone https://github.com/GermaniaKG/VatIdNo.git
$ cd VatIdNo
$ composer install

单元测试

可以将 phpunit.xml.dist 复制到 phpunit.xml 并根据您的需求进行适配,或者保持原样。运行 PhpUnit 测试或 composer 脚本,如下所示

$ composer test
# or
$ vendor/bin/phpunit