suchen

Heim  >  Fragen und Antworten  >  Hauptteil

PHP-Methode, die eine Schnittstelleninstanz in ein Array zurückgibt

<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粉488464731P粉488464731528 Tage vor627

Antworte allen(1)Ich werde antworten

  • P粉447495069

    P粉4474950692023-09-02 12:10:35

    您需要创建一个名为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, '亚历山大', '腕龙骨骼'))
                ];
    

    Antwort
    0
  • StornierenAntwort