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:
<?php class GermanShepherd { //... private $eye_color; private $dob; private $does_shed = true; private $kingdom = "Animalia"; private $phylum = "Chordata"; private $class = "Mammalia"; private $order = "Carnivara"; private $family = "Canidae"; private $genus = "Canis"; private $species = "Canis Lupus"; private $subspecies = "Canis Lupus Familiaris"; private $breed = "German Shepherd Dog"; private $fur_color; //... /** * @return string */ public function getEyeColor(): string { return $this->eye_color; } /** * @param string $eye_color */ public function setEyeColor(string $eye_color): void { $this->eye_color = $eye_color; } /** * @return string */ public function getDob(): string { return $this->dob; } /** * @param string $dob */ public function setDob(string $dob): void { $this->dob = $dob; } /** * @return bool */ public function isDoesShed(): bool { return $this->does_shed; } /** * @param bool $does_shed */ public function setDoesShed(bool $does_shed): void { $this->does_shed = $does_shed; } /** * @return string */ public function getFurColor(): string { return $this->fur_color; } /** * @param string $fur_color */ public function setFurColor(string $fur_color): void { $this->fur_color = $fur_color; } //... }
Wywołanie:
$gs_dog = new GermanShepherd("Brown", "Jan 20, 2018", "Brown"); $gs_dog->setEyeColor("Blue");
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