Rumah  >  Soal Jawab  >  teks badan

Kaedah PHP yang mengembalikan contoh antara muka ke dalam tatasusunan

<p>Saya mempunyai soalan kecil yang saya tidak dapat mencari jawapannya di Internet dan saya tidak pasti bagaimana php dan antara muka berfungsi. </p> <p>Jadi masalahnya ialah saya mempunyai kelas if(!variable instanceof). Tetapi di sini, kelas yang disemak ialah antara muka dan harus berada dalam tatasusunan, anda boleh lihat dalam kod berikut</p> <pre class="brush:php;toolbar:false;">abstract class Action { panggilan fungsi awam akhir(Bone $bone) { $sites = $this->getSites($bone); foreach ($tapak sebagai $tapak) { jika (!$site instanceof Site) { buang Pengecualian baharu("Entri tidak sah"); } } } } kelas BonesSite { fungsi awam getSites(rentetan $site): array { jika ($tapak === 'Mesir') { kembali [ [ 'siteId' => 'name' => 'Kaherah', 'tulang' => 'T-Rex tulang', ], [ 'siteId' => 'name' => 'Giza', 'bone' => 'Tulang raptor', ], [ 'siteId' => 'name' => 'Alexandria', 'tulang' => 'Tulang Bronchiosaurus', ], ]; } kembalikan ['error' => 'Tapak tidak ditemui!']; } } antara muka Tulang { fungsi awam getName(): rentetan; } tapak antara muka { }</pre> <p>Adakah terdapat cara untuk mengembalikan antara muka dalam tatasusunan? </p>
P粉488464731P粉488464731438 hari yang lalu563

membalas semua(1)saya akan balas

  • P粉447495069

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

    Anda perlu mencipta kelas tambahan yang dipanggil Tapak dan mengembalikan pelbagai objek.

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

    Kemudian kembalikan tatasusunan tapak:

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

    balas
    0
  • Batalbalas