I am building several very similar objects and it works for all of them, except one.
The error trace is:
Fatal error: Uncaught Error: Unknown named parameter $hymnus in /THEROUTE/src/App/Models/Completorium.php:27 Stack trace:
#0 /THEROUTE/src/App/Domain/Infrastructure/Mapper/Breviarium/PdoBreviariumMapper.php(397): App\Models\Completorium->__construct('completorium', Object(App\Models\Kyrie), Object(App\Models\Hymnus), Object(App\Models\Psalmodia), Object(App\Models\LectioBrevis), Object(App\Models\CanticumEvangelicum), Object(App\Models\LHOratio), Object(App\Models\Conclusio))
#1 /THEROUTE/src/App/Domain/Infrastructure/Mapper/Breviarium/PdoBreviariumMapper.php(47): App\Domain\Infrastructure\Mapper\Breviarium\PdoBreviariumMapper->completorium(Object(stdClass))
#2 /THEROUTE/src/App/Domain/Infrastructure/Repository/Breviarium/BreviariumRepository.php(21): App\Domain\Infrastructure\Mapper\Breviarium\PdoBreviariumMapper->getData(Array)
#3 /THEROUTE/src/App/Domain/Service/Breviarium/BreviariumService.php(36): App\Domain\Infrastructure\Repository\Breviarium\BreviariumRepository->getData(Array)
#4 /THEROUTE/src/App/Controllers/Home.php(44): App\Domain\Service\Breviarium\BreviariumService->getData()
#5 [internal function]: App\Controllers\Home->getFromServerAction()
#6 /THEROUTE/src/Core/Controller.php(48): call_user_func_array(Array, Array)
#7 /THEROUTE/src/Core/Router.php(124): Core\Controller->__call('getFromServer', Array)
#8 /THEROUTE/index.php(57): Core\Router->dispatch('')
#9 {main} thrown in /THEROUTE/src/App/Models/Completorium.php on line 27
The relevant parts of the code:
The line 397
is: new \App\Models\Completorium(
, and I passing one named parameter hymnus
correctly at: hymnus: new \App\Models\Hymnus("Lorem ipsum"),
:
new \App\Models\Completorium(
typus: $r->hora,
kyrie: new \App\Models\Kyrie($r->kyrieID,$r->kyrie),
hymnus: new \App\Models\Hymnus("Lorem ipsum"),
psalmodia:
new \App\Models\Psalmodia(
$r->psalmodiaTypus,
(object) [
'antiphons' => $r->antiphons,
'psalmus' => $r->psalmus,
'psalmusPericopa' => $r->psalmusPericopa,
'epigraphs' => $r->epigraphs,
'themes' => $r->themes,
'parts' => $r->parts,
]
),
lectioBrevis:
new \App\Models\LectioBrevis(
$r->lectioBrevis,
$r->brevisPericopa,
new \App\Models\ResponsoriumBrevis(
$r->brevisResponsorium,
$r->brevisResponsoriumTypus)
),
canticumEvangelicum:
new \App\Models\CanticumEvangelicum(
6,
array(new \App\Models\Antiphona(0,$r->canticumEvangelicum))),
oratio:
new \App\Models\LHOratio($r->oratio),
conclusio:
new \App\Models\Conclusio($r->antiphonaMariam)
)
The line 27
is: typus:$typus,
namespace App\Models;
class Completorium extends \App\Models\LiturgiaTypus implements \JsonSerializable
{
private Kyrie $kyrie;
private LectioBrevis $lectioBrevis;
private CanticumEvangelicum $canticumEvangelicum;
private Conclusio $conclusio;
private bool $isPrimaVesperas=false;
public function __construct
(
string $typus,
Kyrie $kyrie,
Hymnus $hymnus,
Psalmodia $psalmodia,
LectioBrevis $lectioBrevis,
CanticumEvangelicum $canticumEvangelicum,
LHOratio $oratio,
Conclusio $conclusio
)
{
parent::__construct
(
typus:$typus,
hymnus:$hymnus,
psalmodia:$psalmodia,
oratio:$oratio
);
$this->kyrie=$kyrie;
$this->lectioBrevis=$lectioBrevis;
$this->canticumEvangelicum=$canticumEvangelicum;
$this->conclusio=$conclusio;
}
public function jsonSerialize():mixed{
return get_object_vars($this);
}
}
namespace App\Models;
class Hymnus implements \JsonSerializable
{
private string $hymnus;
public function __construct(string $hymnus)
{
$this->hymnus=$hymnus;
}
public function jsonSerialize():mixed{
return get_object_vars($this);
}
}
I don't understand why this error. I have similar code for other classes that works fine.
What about the \App\Models\LiturgiaTypus
class. Does it have a hymnus
parameter in the constructor?
Because it could very well cause this error too:
parent::__construct
(
typus:$typus,
hymnus:$hymnus,
psalmodia:$psalmodia,
oratio:$oratio
);