16. Zadanie z OOP podsumowujące dotychczasowe tematy.


Stwórz klasę `Pesel`, która będzie walidować i dekodować numer PESEL podany przez użytkownika. Założenie jest takie, że po wpisaniu przez użytkownika nr PESEL zostanie sprawdzona jego poprawność i wyświetlona informacja w formacie:

np. 
Kobieta urodzona w środę 11 czerwca 1997 roku.
Do urodzin pozostało: 45 dni, 12 godzin, 30 minut, 15 sekund.
np.
Mężczyzna urodzony w piątek 13 grudnia 1970 roku.
Do urodzin pozostało: 45 dni (1080 godzin).

Numer PESEL składa się z 11 cyfr:
– Cyfry 1-2: Rok urodzenia (dwie ostatnie cyfry)
– Cyfry 3-4: Miesiąc urodzenia (z uwzględnieniem stulecia)
– Cyfry 5-6: Dzień urodzenia
– Cyfry 7-10: Numer porządkowy + płeć
– Cyfra 11: Cyfra kontrolna

Kodowanie stulecia w miesiącu:
– 1900-1999: miesiąc (01-12)
– 2000-2099: miesiąc + 20 (21-32)
– Przykład: 23 stycznia 2012 → `122123`… (12=rok, 21=styczeń XXI w., 23=dzień)

Płeć:
– Cyfra 10 (przedostatnia): parzysta = kobieta, nieparzysta = mężczyzna

Szczegóły ad tworzenia tego nr dostępne są tutaj.

Wymagania:

Ocena 2

1. Stwórz klasę `Pesel` z:
– Prywatną właściwością `$numer`
– Konstruktorem przyjmującym numer PESEL jako string

2. Stwórz metodę `walidujFormat(): bool`, która sprawdza:
– Czy podany PESEL to liczba (użyj `ctype_digit()`)
– Czy zawiera dokładnie 11 cyfr
– Zwraca `true` jeśli poprawny, `false` jeśli nie

3. Stwórz metodę `dekoduj(): array`, która zwraca tablicę:
[
'rok’ => 1997,
'miesiac’ => 6,
'dzien’ => 11,
'plec’ => 'Kobieta’
]

Ocena 3

Dodaj metody:

  1. pobierzDate(): DateTime – zwraca obiekt DateTime z datą urodzenia
  2. wyswietlInformacje(): void – wyświetla zdekodowane dane

Utwórz instancję klasy i wywołaj stworzone metody

Ocena 4

Rozszerz metodę wyswietlInformacje() o wyświetlanie danych w formacie jak poniżej

Mężczyzna urodzony w Friday 13 December 1970 roku.
Do urodzin pozostało: 45 dni (1080 godzin).

Ocena 5

Przetłumacz dzień tygodnia na polski (użyj tablicy lub IntlDateFormatter)

Wyświetl nazwę miesiąca słownie (styczeń, luty…)

Dodaj szczegółowy licznik czasu

Kobieta urodzona w środę 11 czerwca 1997 roku.
Do urodzin pozostało: 45 dni, 12 godzin, 30 minut, 15 sekund.

Ocena 6

Dodaj walidację cyfry kontrolnej.