Giter VIP home page Giter VIP logo

pesel's Introduction

PESEL

Build Status Coverage Status StyleCI Latest Stable Version License

Paczka do łatwej walidacji numeru PESEL.

Instalacja

Composer:

composer require kkszymanowski/pesel

Upgrade guide

2.* -> 3.*

Wersja 3 jest wstecznie kompatybilna z wersją 2 ale wymaga PHP >=7.3. Poza podniesieniem wersji PHP żadne zmiany nie są konieczne.

Zalecana jest natomiast zmiana łapanego wyjątku InvalidArgumentException na wyjątki odpowiadające konkretnym błędom walidacji:

  • Pesel\Exceptions\InvalidLengthException - Błędna długość
  • Pesel\Exceptions\InvalidCharactersException - Znaki inne niż cyfry
  • Pesel\Exceptions\InvalidChecksumException - Błędna suma kontrolna

lub po prostu na Pesel\Exceptions\PeselValidationException aby złapać wszystkie błędy walidacji.

Użycie

Tworzenie obiektu
$pesel = new Pesel($number);

lub

$pesel = Pesel::create($number);

Powyższe metody są równoważne.

Podczas tworzenia obiektu sprawdzana jest poprawność numeru PESEL.

  • Powinien mieć 11 znaków
  • Powinien zawierać wyłącznie cyfry
  • Suma kontrolna powinna być poprawna.

Jeżeli przynajmniej jeden z tych warunków nie zostanie spełniony, zostanie rzucony odpowiedni wyjątek:

  • Pesel\Exceptions\InvalidLengthException - Błędna długość
  • Pesel\Exceptions\InvalidCharactersException - Znaki inne niż cyfry
  • Pesel\Exceptions\InvalidChecksumException - Błędna suma kontrolna
try {
    Pesel::create($number);

    echo('Numer PESEL jest poprawny');
} catch(Pesel\Exceptions\InvalidLengthException $e) {
    echo('Numer PESEL ma nieprawidłową długość');
} catch(Pesel\Exceptions\InvalidCharactersException $e) {
    echo('Numer PESEL zawiera nieprawidłowe znaki');
} catch(Pesel\Exceptions\InvalidChecksumException $e) {
    echo('Numer PESEL zawiera błędną sumę kontrolną');
}

Wszystkie powyższe wyjątki dziedziczą z Pesel\Exceptions\PeselValidationException więc jeżeli niepotrzebne jest rozróżnienie na konkretne błędy walidacji można zastosować jedną klauzulę catch:

try {
    Pesel::create($number);

    echo('Numer PESEL jest poprawny');
} catch(\Pesel\Exceptions\PeselValidationException $e) {
    echo('Numer PESEL jest błędny');
}
Pobieranie zawartości numeru PESEL:
$pesel = new Pesel($number);

$pesel->getNumber();    // Zwraca string

$pesel->getBirthDate(); // Zwraca DateTime

$pesel->getGender();    // Zwraca Pesel::GENDER_MALE lub Pesel::GENDER_FEMALE
Sprawdzenie poprawności:
Pesel::isValid($pesel); // Zwraca bool, nie rzuca wyjątku
Sprawdzenie daty urodzenia:

Parametr $birthDate jest instancją wbudowanej w PHP klasy DateTime

PeselValidator::hasBirthDate(Pesel::create($pesel), $birthDate);
Sprawdzenie płci
PeselValidator::hasGender(Pesel::create($pesel), Pesel::GENDER_MALE);

PeselValidator::hasGender(Pesel::create($pesel), Pesel::GENDER_FEMALE);

pesel's People

Contributors

kkszymanowski avatar snapshotpl avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.