olssonm / swedish-entity
瑞典个人编号和组织编号的验证器和格式化工具。包含Laravel验证器。
Requires
- php: ^7.3|^8.0
- personnummer/personnummer: ^3.0.4
Requires (Dev)
- orchestra/testbench: >=4.0
- squizlabs/php_codesniffer: ^3.5
Suggests
- laravel/framework: For Laravel-integration
This package is auto-updated.
Last update: 2024-09-04 18:21:37 UTC
README
验证、格式化和提取瑞典个人编号(社会保障号码)和组织编号(组织号码)的数据。
此包还处理名为“Samordningsnummer”(协调号码)的临时个人身份号码。
还包括Laravel验证器。
–
此包的优点(虽然并非始终严格遵循标准)是能够使用短/长(10或12个字符)格式化,带有或没有分隔符(即11/13个字符)。
请注意,公司总是由10/11个字符组成(带有或没有可选的分隔符)。
此包以personnummer/php-package作为其社会保障处理的基础,但添加了一些额外的属性和方法。
安装
composer require olssonm/swedish-entity
使用
验证
<?php use Olssonm\SwedishEntity\Person; (new Person('600411-8177'))->valid() // true
<?php use Olssonm\SwedishEntity\Organization; (new Organization('556016-0680'))->valid() // true
自动检测实体类型
⚠️ 如果
detect
-方法失败,将抛出Olssonm\SwedishEntity\Exceptions\DetectException
异常。
<?php use Olssonm\SwedishEntity\Entity; $entity = Entity::detect('600411-8177'); var_dump(get_class($entity)) // Olssonm\SwedishEntity\Person
格式化
⚠️ 格式化无效实体将导致异常。您应该先进行验证。
个人
<?php use Olssonm\SwedishEntity\Person; (new Person('071012-9735'))->format($characters = 12, $separator = true) // 20071012-9735 (new Person('071012+9735'))->format($characters = 12, $separator = true) // 19071012+9735 (new Person('200710129735'))->format() // 071012-9735
组织
<?php use Olssonm\SwedishEntity\Organization; (new Organization('5560160680'))->format($separator = true) // 556016-0680 (new Organization('556016-0680'))->format($separator = false) // 5560160680
Laravel验证器
该包注册了“entity”规则,该规则接受参数any
、organization
或person
。
<?php $this->validate($request, [ 'number' => 'required|entity:organization' ]);
您也可以省略该参数,验证器将回退到any
<?php $this->validate($request, [ 'number' => 'required|entity' ]);
自定义消息
<?php use Illuminate\Support\Facades\Validator; $validator = Validator::make($request->all(), [ 'number' => 'required|entity:person' ], [ 'number.entity' => "Invalid personnummer!" ]);
隐式验证
为了使验证器在社会保障/组织号码缺失或为空字符串时运行(注意,不适用于null
),您需要隐式声明,即
'organization_number' => [ 'required_with:company_name', 'entity:organization', ],
或
'organization_number' => [ 'required', 'entity', ],
属性
个人
*以下之一:“Dödsbon”、“Stat, landsting och kommuner”、“Aktiebolag”、“Enkelt bolag”、“Ekonomiska föreningar”、“Ideella föreningar och stiftelser”和“Handelsbolag, kommanditbolag och enkla bolag”。 注意:以0、3和4开头的组织,虽然技术上是一个有效号码,但它们是否存在尚不确定,将返回空字符串。
示例
<?php use Olssonm\SwedishEntity\Person; $person = new Person('600411-8177'); $person->gender; // Male
组织
*以下之一:“Dödsbon”、“Stat, landsting och kommuner”、“Aktiebolag”、“Enkelt bolag”、“Ekonomiska föreningar”、“Ideella föreningar och stiftelser”和“Handelsbolag, kommanditbolag och enkla bolag”。 注意:以0、3和4开头的组织,虽然技术上是一个有效号码,但它们是否存在尚不确定,将返回空字符串。
示例
<?php use Olssonm\SwedishEntity\Organization; $organization = new Organization('212000-1355'); $organization->type; // Stat, landsting och kommuner
清洁助手
Entity类包含一个清洁助手,可用于从社会保障号或组织号中删除非法字符
<?php use Olssonm\SwedishEntity\Entity; $number = Entity::clean(' 212000-1355a'); // '212000-1355'
请注意,这不会自动应用,因此您需要在验证之前清理字符串。
需要注意的细节
个体经营者
EF(个体经营者)-虽然技术上是一家公司/组织,但使用所有者的个人编号。因此,该号码不会验证为公司/组织。而不是为此使用自定义解决方案(如Creditsafe、Bisnode等通过在组织号/社会保障号中添加额外的数字/字符),一种处理方式是
- 在期望同时处理人员和公司时使用10位数字(最好使用分隔符)。提示:通过
format()
,Person
和Organization
默认都会以10位数字(和分隔符)格式化。 - 使用
detect
-方法自动验证两种类型
如果需要在验证后检查类型;
<?php use Olssonm\SwedishEntity\Entity; use Olssonm\SwedishEntity\Person; use Olssonm\SwedishEntity\Organization; use Olssonm\SwedishEntity\Exceptions\DetectException try { $entity = Entity::detect('600411-8177'); } catch (DetectException $e) { // Handle exception } // PHP < 8 if(get_class($entity) == Person::class) { // Do stuff for person } elseif(get_class($entity) == Organization::class) { // Do stuff for organization } // PHP 8 if($entity::class == Person::class) { // Do stuff for person } elseif($entity::class == Organization::class) { // Do stuff for organization }
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。
© 2022 Marcus Olsson。