recherche

Maison  >  Questions et réponses  >  le corps du texte

Méthode PHP qui renvoie l'instance d'interface dans un tableau

<p>J'ai une petite question à laquelle je ne trouve pas de réponse sur Internet et je ne sais pas vraiment comment fonctionnent php et l'interface. </p> <p>Le problème est donc que j'ai une instance de classe if(!variable). Mais ici, la classe vérifiée est une interface et doit être dans un tableau, vous pouvez voir dans le code suivant</p> <pre class="brush:php;toolbar:false;">action de classe abstraite { dernier appel de fonction publique (Bone $bone) { $sites = $this->getSites($bone); foreach ($sites en tant que $site) { si ($site instanceof Site) { lancer une nouvelle exception ("Entrée invalide"); } } } } classe BonesSites { fonction publique getSites(string $site) : tableau { if ($site === 'Egypte') { retour [ [ 'siteId' => 'name' => 'Le Caire', 'bone' => 'Os de T-Rex', ], [ 'siteId' => 'name' => 'Gizeh', 'bone' => 'Os de rapaces', ], [ 'siteId' => 'name' => 'Alexandrie', 'bone' => 'Os de bronchiosaure', ], ]; } return ['erreur' => 'Site introuvable !']; } } interface Os { fonction publique getName() : chaîne ; } site d'interface { }</pré> <p>Existe-t-il un moyen de renvoyer une interface dans un tableau ? </p>
P粉488464731P粉488464731482 Il y a quelques jours601

répondre à tous(1)je répondrai

  • P粉447495069

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

    Vous devez créer une classe supplémentaire appelée Site et renvoyer un tableau d'objets.

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

    Renvoyez ensuite le tableau du site :

            return
                [
                    (new Site(1, '开罗', 'T-Rex骨骼')),
                    (new Site(2, '吉萨', '迅猛龙骨骼')),
                    (new Site(3, '亚历山大', '腕龙骨骼'))
                ];
    

    répondre
    0
  • Annulerrépondre