"Unknown named parameter" incomprehensible error

387 Views Asked by At

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:

PdoBreviariumMapper

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)

            )

Completorium

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);
    }
}

Hymnus

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.

1

There are 1 best solutions below

1
On BEST ANSWER

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
        );