Download the PHP package vldmir/tin without Composer
On this page you can find all versions of the php package vldmir/tin. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package tin
Short Description Enhanced Taxpayer Identification Number validator with input masks (fork of loophp/tin)
License MIT
Homepage https://github.com/vldmir/tin
Informations about the package tin
![GitHub Workflow Status][github workflow status]
Enhanced Taxpayer Identification Number (TIN) Validator
Description
An enhanced library to validate TIN numbers for individuals with advanced features including input masks, TIN type identification, and comprehensive Docker support. This is a fork of the original loophp/tin library with significant enhancements.
New Features in v2.0.0:
- 🎯 Input Mask Support - Get format masks for TIN input fields
- 📝 Placeholder Generation - Generate example values for input fields
- 🔧 Input Formatting - Format user input according to TIN mask
- 🏷️ TIN Type Identification - Identify specific TIN types (DNI, NIE, CIF, etc.)
- 📊 TIN Types API - Get available TIN types for each country
- 🐳 Docker Support - Complete development environment with PHP 8.3
- 📚 Enhanced Documentation - Comprehensive examples and usage guides
Supported countries:
- Austria (AT)
- Belgium (BE)
- Bulgaria (BG)
- Croatia (HR)
- Cyprus (CY)
- Czech Republic (CZ)
- Denmark (DK)
- Estonia (EE)
- Finland (FI)
- France (FR)
- Germany (DE)
- Greece (GR) - only size
- Hungary (HU)
- Ireland (IE)
- Italy (IT)
- Latvia (LV) - no check digit
- Lithuania (LT)
- Luxembourg (LU)
- Malta (MT) - no check digit
- Netherlands (NL)
- Poland (PL)
- Portugal (PT)
- Romania (RO) - no check digit
- Slovakia (SK)
- Slovenia (SI)
- Spain (ES)
- Sweden (SE)
- United Kingdom (UK) - only structure
If your country is not there, feel free to open an issue with your country code, and a link to the specification. Ideally, you can provide a pull request with the algorithm and the tests.
Requirements
- PHP >= 8.1
Quick Start
Installation
Basic Validation
To simply check the validity of a TIN number:
If you want to get the reason why a number is invalid, you can use:
Advanced Features
Input Masks and Formatting
The library provides comprehensive input mask and formatting capabilities:
TIN Type Identification
Different countries may have multiple types of TINs. The library can identify and categorize them:
Complete Example
Examples by Country
Country | Mask | Placeholder | TIN Types |
---|---|---|---|
Belgium (BE) | 99.99.99-999.99 |
85.07.30-033.61 |
TIN |
Spain (ES) | 99999999A |
12345678Z |
DNI, NIE, CIF |
Germany (DE) | 999 999 999 99 |
123 456 789 01 |
IdNr, StNr |
United Kingdom (UK) | AA999999A |
AB123456C |
UTR, NINO |
France (FR) | 9 99 99 99 999 999 |
1 23 45 67 890 123 |
TIN |
Italy (IT) | AAAAAANNANNANAAA |
RSSMRA85T10A562S |
TIN |
Mask Format:
9
- Digit (0-9)A
- Uppercase lettera
- Lowercase letter- Other characters (
.
,-
, space) - Separators
Docker Development Environment
The library includes a complete Docker setup for easy development and testing:
Quick Start with Docker
Available Commands
Manual Docker Commands
For detailed Docker documentation, see DOCKER.md.
Strict Mode
If you want to use a stricter method (without normalizing the TIN number, that
is, using the raw TIN number), use the strict
parameter in the check
or
isValid
functions as shown below. By default, it is set to false
.
Code Quality, Tests and Benchmarks
Every time changes are introduced into the library, Github run the tests and the benchmarks.
The library has tests written with PHPSpec. Feel free
to check them out in the spec
directory. Run composer phpspec
to trigger the
tests.
Before each commit some inspections are executed with
GrumPHP, run ./vendor/bin/grumphp run
to
check manually.
PHPInfection is used to ensure that
your code is properly tested, run composer infection
to test your code.
Running Tests
Links
European Commission TIN service
TIN Algorithms - Public - Functional Specification
Taxpayer Identification Number
Authors
- Volodymyr Romantsov - Enhanced version with input masks and Docker support
- Thomas Portelange - Original library
- Pol Dellaiera - Original library
Contributing
We warmly welcome your contributions by submitting pull requests. Our team is highly responsive and will gladly guide you through the entire process, from the initial submission to the final resolution.
Development Setup
- Fork the repository
- Clone your fork
- Set up the Docker environment:
make up
- Make your changes
- Run tests:
make phpspec
- Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
[github workflow status]: https://img.shields.io/github/actions/workflow/status/vldmir/tin/tests.yml?branch=master&style=flat-square