![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
mam taki plik:
Chialem zbudować funkcje dla potrzeb oblczenia wieku osoby na podstawie daty urodznia. Kiedyś używałem czegoś na kształt poniżej ale nie potrafie tego użyć w strukturze funkcji / klas.
Dziekuje z góry za pomoc jak to zrobić. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. W komentarzu podajesz, że Person::$dob jest typu bool po czym przypisujesz domyślnie pustego stringa? PHP na takie coś pozwala, ale wyzbądź się takich paskudnych praktyk.
2. Metoda nazywa się setAge() więc raczej powinna przyjąć wiek jako liczbę, a nie datę urodzenia (setDateOfBirth()). 3. Przecież na dobrą sprawę ten kod jest po prostu do przekopiowania w klasę (pomijając dwa powyższe punkty). |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 22 Dołączył: 17.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze zobacz co zwróci $now->diff($date); - będzie to tablica w której różnica ilości dni będzie w kluczu: days.
i tutaj błąd:
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Po pierwsze zobacz co zwróci $now->diff($date); - będzie to tablica w której różnica ilości dni będzie w kluczu: days. @bobek.... przeciez autor w komentarzu wyraźnie napisal jak sie dobrac do tego diff.... czytamy czytamy i jeszcze raz czytamy, potem sie wymądrzamy ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 340 Pomógł: 46 Dołączył: 31.07.2009 Skąd: A Ostrzeżenie: (0%) ![]() ![]() |
dodam swoje 3 grosze ;p
data urodzenia powinna byc przekarzana w kontruktorze, a setter dla niej usuniety. W kontruktorze powinno by takze wywolanie dla metody liczacej wiek. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 22 Dołączył: 17.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
dziękuje ze szybką odpowiedz. Niestety z tego co widzę to wszyscy trzej już wiecie jakie jest rozwiązanie a ja dalej nic nie rozumiem. Doceniam uwagi typu: Cytat data urodzenia powinna byc przekarzana w kontruktorze, a setter dla niej usuniety ,ale ponieważ siadam do php bardzoooo sporadycznie to niestety nic mi to nie mówi. ![]() Podpowiedz Cytat 3. Przecież na dobrą sprawę ten kod jest po prostu do przekopiowania w klasę jest bardzo czytelna ale oczywiście że:jest nieprawidłowe...wiec i ta oczywista oczywistość dla was nie jest oczywista dla Przedszkolaka. Oczywiście mógłybym zacząć czytać manual php i po 5-8 godzinach dojść za pomocą waszych uwag do rozwiązania i przy okazji nauczyć się wielu innych rzeczy związanych z php. Czy jest szansa na poprawny kod z komentarzem co sie gdzie dzieje. Dziękuje za waszą pomoc i zrozumienie. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 55 Dołączył: 19.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
a nie łatwiej skorzystać z czegoś co już istnieje ? np. biblioteki Carbon
potem tylko :
-------------------- Polecam MyDevil hosting idealny dla deweloperów
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
a nie łatwiej skorzystać z czegoś co już istnieje ? np. biblioteki Carbon potem tylko :
Wolałbym uniknąć strzelania z armaty do wróbla. Potrzebuje zrobić to dla dwóch zmiennych. Jeżeli jest chętny na wskazanie mi rozwiązania bedę wdzięczny. Pozdrawiam. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 22 Dołączył: 17.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Taki szybki kod:
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje wszystkim za uwagi. Ostateczne rozwiązanie wyglada tak:
Możliwe że bede chciał znaleść udoskonalenie tego obliczania. 1) Dla osoby gdzie wiek jest <0 żeby policzyć miesiące 2) wpisanie lat / lata np. 31 lat, 32 lata etc (gdzieś takie coś widziałem wiec może jutro poszukam i zobacze czy ogarniam temat ![]() ===EDIT nr1==== Punkt nr 2 już znalazłem i dodałem ![]() ![]() ===EDIT nr2=== Zrobiłęm punkt nr1 czyli obliczanie miesiecy dla osoby o mniej niz 1 rok życia. I jest ok. PYTANIE Ale mam jeden problem. Jeśli mam osobę bez daty urodzenia to mi oblicza że ma 2015 lat. Gdzie jest problem. Jak zwykle dziękuje za podpowiedzi. Pozdrawiam. Ten post edytował pela222 5.08.2015, 00:56:25 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Ale mam jeden problem. Jeśli mam osobę bez daty urodzenia to mi oblicza że ma 2015 lat. Gdzie jest problem. Jak to mówią: między krzeslem a monitorem ![]() Tak ciezko sie domyslic, ze gdy nie ma daty urodzenia, to nie wykonywac zadnych obliczen? No wiesz, masz uzyc IF. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 21:52 |