小さな質問がありますが、インターネット上で答えが見つかりません。php とインターフェイスがどのように機能するかよくわかりません。
問題は、if(!variableinstanceofclass) があることです。ただし、ここでは、チェックされるクラスはインターフェイスであり、配列内にある必要があります。次のコードでわかるように、
抽象クラス アクション { 最終的なパブリック関数呼び出し(Bone $bone) { $sites = $this->getSites($bone); foreach ($sites として $site) { if (!$site サイトのインスタンス) { throw new \Exception("無効なエントリ"); } } } } クラス BonesSites { パブリック関数 getSites(string $site): 配列 { if ($site === 'エジプト') { 戻る [ [ 'siteId' => 1、 '名前' => 'カイロ', 「骨」 => 「ティラノサウルスの骨」、 ]、 [ 'siteId' => 2、 '名前' => 'ギザ'、 '骨' => '猛禽類の骨', ]、 [ 'siteId' => 3、 '名前' => 'アレクサンドリア', 「骨」 => 「ブロンキオサウルスの骨」、 ]、 ]; } return ['error' => 'サイトが見つかりません!']; } } インターフェースボーン { パブリック関数 getName(): 文字列; } インターフェースサイト { }
インターフェイスを配列で返す方法はありますか?
Site という追加のクラスを作成し、オブジェクトの配列を返す必要があります。
リーリー次に、サイト配列を返します:
リーリー