Download the PHP package spoorsny/south-african-id without Composer
On this page you can find all versions of the php package spoorsny/south-african-id. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download spoorsny/south-african-id
More information about spoorsny/south-african-id
Files in spoorsny/south-african-id
Package south-african-id
Short Description A self-validating value object encapsulating a South African government-issued personal identification number.
License GPL-3.0-or-later
Informations about the package south-african-id
South African ID for PHP
A self-validating value object encapsulating a South African government-issued personal identification number, for PHP.
A South African government-issued identity number consists of 13 digits and the following segments:
- birth date: the first 6 digits represent the person's date of birth in the format yymmdd.
- gender: the next 4 digits indicate that the person is male if the value is 5000 or above; otherwise, female.
- citizenship: the next single digit shows the person's citizenship status: 0 for a citizen, 1 for a permanent resident.
- race: the next single digit was historically used to indicate the person's race.
- check digit: the last digit is used to validate the entire number, to protect against typing errors. It is calculated with the Luhn Algorithm.
Install
Use Composer to install the package.
Usage
The value object can be instantiated by passing a string to its constructor.
If the string argument is not in the valid format, an
InvalidArgumentException
with a message indicative of the type of error, will
be thrown.
The value object can used in places where strings are used, because it
implements the Stringable
interface. For
example, a value object can be instantiated by passing another instance to its
constructor.
[!NOTE] The value object always formats the identity number with a single space between the date segment and the gender segment, and a single space between the gender segment and the citizenship segment.
It can be used with the strval()
function and echo
statement.
Different instances of the class can be checked for equality with the equals()
method.
Even though the identity number starts with the person's birth date, it cannot be used to compare whether one person is older than another. This is due to the century portion being missing from the date.
Useful information encoded in the identity number can be extracted, for example:
The different segments of the identity number can be extracted from the value object as follows:
Contributing
To contribute to the package, see the Contributing Guide.
License
Copyright © 2024 Geoffrey Bernardo van Wyk https://geoffreyvanwyk.dev
This file is part of package spoorsny/south-african-id.
Package spoorsny/south-african-id is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Package spoorsny/south-african-id is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with package spoorsny/south-african-id. If not, see https://www.gnu.org/licenses/.
For a copy of the license, see the LICENSE file in this repository.