![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
mam tu taki przykładzik z artykułu z lipca 2022 i nie rozumiem dlaczego autor podał parametry klasy przy tworzeniu obiektu. W artykule nie ma tego wyjaśnione, natomiast Visual Studio Code mówi mi przy tworzeniu obiektu, że klasa nie ma żadnego konstruktora, więc zostanie wywołana bez parametru. Ok, jasne, ale więc dlaczego podano te parametry? klasa:
Wywołanie:
W ogóle kiedy to sie odpali to wywala błąd: Kod Fatal error: Uncaught TypeError: GermanShepherd::getEyeColor(): Return value must be of type string, null returned in C:\xampp\htdocs\index.php:28 Stack trace: #0 C:\xampp\htdocs\index.php(91): GermanShepherd->getEyeColor() #1 {main} thrown in C:\xampp\htdocs\index.php on line 28
Ten post edytował sadistic_son 12.01.2023, 11:34:03 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie do końca dobrze jest to zapisane. Brakuje wartości domyślnej dlatego jeżeli wywołasz getter przed setterem to php rzuci błędem "Typed property Test::$wynik must not be accessed before initialization". Ale tak, możesz pozbyć się konstuktora. Czasami stosuje też zapis np Test::fromArray(array $values) który inicjuje hurtem jakieś wartości.
edit: Oczywiście jeśli parametry "mają być niezmienne w całym cyklu życia obiektu" to po to powstało readonly. Ten post edytował viking 13.01.2023, 09:40:34 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 20:49 |