瑞典个人身份证和公司身份证号的数据类型

2.1.1 2020-12-07 22:20 UTC

This package is auto-updated.

Last update: 2024-08-29 03:36:42 UTC


README

byrokrat

个人身份证

Packagist Version Build Status Quality Score

瑞典个人身份证和公司身份证号的数据类型。

安装

composer require byrokrat/id

使用

use byrokrat\id\PersonalId;
use byrokrat\id\IdInterface;

$id = new PersonalId('940323-2383');

// outputs 940323-2383
echo $id;

// outputs 940323-2383
echo $id->format(IdInterface::FORMAT_10_DIGITS);

// outputs 199403232383
echo $id->format(IdInterface::FORMAT_12_DIGITS);

// outputs 940323
echo $id->format('ymd');

// outputs something like 25
echo $id->getAge();

// outputs 1 (true)
echo $id->isFemale();
use byrokrat\id\OrganizationId;
use byrokrat\id\IdInterface;

$id = new OrganizationId('835000-0892');

// outputs 835000-0892
echo $id->format(IdInterface::FORMAT_10_DIGITS);

// outputs 008350000892
echo $id->format(IdInterface::FORMAT_12_DIGITS);

// outputs 1 (true)
echo $id->isSexUndefined();

// outputs 1 (true)
echo $id->isNonProfit();

类层次结构

创建ID对象

创建ID对象可能很复杂。

  • 如果被识别的个人不是瑞典公民,则个人身份可以是一个协调身份。
  • 如果公司只由一个个人注册(egenföretagare),则公司身份证可以是一个个人身份。
  • 如果个人不是瑞典公民,则单个人公司可以使用协调身份。
  • 有时您可能希望使用FakeId实现来处理没有有效瑞典个人身份证的人员。

为了解决这些困难,包含了一系列可装饰的工厂。通过在创建时链式调用工厂对象来创建具有所需能力的工厂。

use byrokrat\id\PersonalIdFactory;
use byrokrat\id\CoordinationIdFactory;

$factory = new PersonalIdFactory(new CoordinationIdFactory);

$id = $factory->createId('940323-2383');

在这个例子中,工厂将首先尝试创建一个PersonalId,如果失败,它将尝试创建一个CoordinationId,如果失败,它将抛出一个异常。

以下工厂包含在内

控制包含日期的ID的分隔符和世纪

为了控制日期的计算,您可以通过传递一个datetime对象来指定解析时间。

use byrokrat\id\PersonalIdFactory;

$factory = new PersonalIdFactory;

// Year interpreted as 2010 as parsing is done 2020
$young = $factory->createId('1001012382', new \DateTime('20200101'));

// Year interpreted as 1910 as parsing is done 1990
$older = $factory->createId('1001012382', new \DateTime('19900101'));

// outputs 2010
echo $young->format('Y');

// outputs 1910
echo $older->format('Y');

指定解析日期还会影响所使用的分隔符。

use byrokrat\id\PersonalIdFactory;

$factory = new PersonalIdFactory;

// Delimiter is '+' as parsing is done in 2050
$id = $factory->createId('194001079120', new \DateTime('20500101'));

// outputs 400107+9120
echo $id;

格式化

可以使用format()方法以自定义格式打印ID,其中$formatStr是格式令牌和非格式化字符的混合(有关格式令牌的列表,请参阅下面)。

echo $id->format($formatStr);

如果您需要格式化大量ID,可以创建一个格式化对象。

use byrokrat\id\Formatter\Formatter;
use byrokrat\id\PersonalId;

$formatter = new Formatter('y');

// outputs 82
echo $formatter->format(new PersonalId('940323-2383'));

格式化令牌

不是格式化令牌的字符将由格式化器原样返回。

定义

关于ID号码构建和使用的瑞典来源

Symfony Bundle

要在您的Symfony项目中用作验证规则,请参阅第三方包IdentityNumberValidatorBundle