PHP-Methode, die eine Schnittstelleninstanz in ein Array zurückgibt
P粉488464731
P粉488464731 2023-09-01 13:40:43
0
1
596
<p>Ich habe eine kleine Frage, auf die ich im Internet keine Antwort finden kann, und ich bin mir nicht wirklich sicher, wie PHP und die Schnittstelle funktionieren. </p> <p>Das Problem ist also, dass ich eine if(!variable-Instanz der Klasse) habe. Aber hier ist die geprüfte Klasse eine Schnittstelle und sollte sich in einem Array befinden, wie Sie im folgenden Code sehen können</p> <pre class="brush:php;toolbar:false;">abstrakte Klassenaktion { Letzter öffentlicher Funktionsaufruf (Bone $bone) { $sites = $this->getSites($bone); foreach ($sites als $site) { if (!$site-Instanz von Site) { throw new Exception("Ungültiger Eintrag"); } } } } Klasse BonesSites { öffentliche Funktion getSites(string $site): Array { if ($site === 'Egypt') { zurückkehren [ [ 'siteId' => 'name' => 'Kairo', 'bone' => 'T-Rex-Knochen', ], [ 'siteId' => 'name' => 'Gizeh', 'bone' => 'Raptors-Knochen', ], [ 'siteId' => 'name' => 'Alexandria', 'bone' => 'Bronchiosaurus-Knochen', ], ]; } return ['error' => 'Site nicht gefunden!']; } } Schnittstelle Knochen { öffentliche Funktion getName(): string; } Schnittstellenseite { }</pre> <p>Gibt es eine Möglichkeit, eine Schnittstelle in einem Array zurückzugeben? </p>
P粉488464731
P粉488464731

Antworte allen(1)
P粉447495069

您需要创建一个名为Site的额外类,并返回一个对象数组。

class Site
{
    private int $siteId;
    private string $name;
    private string $bone;

    /**
     * @param int    $siteId
     * @param string $name
     * @param string $bone
     */
    public function __construct(int $siteId, string $name, string $bone)
    {
        $this->siteId = $siteId;
        $this->name = $name;
        $this->bone = $bone;
    }

    /**
     * @return int
     */
    public function getSiteId(): int
    {
        return $this->siteId;
    }

    /**
     * @param int $siteId
     */
    public function setSiteId(int $siteId): void
    {
        $this->siteId = $siteId;
    }

    /**
     * @return string
     */
    public function getName(): string
    {
        return $this->name;
    }

    /**
     * @param string $name
     */
    public function setName(string $name): void
    {
        $this->name = $name;
    }

    /**
     * @return string
     */
    public function getBone(): string
    {
        return $this->bone;
    }

    /**
     * @param string $bone
     */
    public function setBone(string $bone): void
    {
        $this->bone = $bone;
    }

}

然后返回站点数组:

        return
            [
                (new Site(1, '开罗', 'T-Rex骨骼')),
                (new Site(2, '吉萨', '迅猛龙骨骼')),
                (new Site(3, '亚历山大', '腕龙骨骼'))
            ];
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage