傳回介面實例到數組中的PHP方法
P粉488464731
2023-09-01 13:40:43
<p>我有一個小問題,在網路上找不到答案,也不太確定php和介面的工作原理。 </p>
<p>所以問題是我有一個if(!variable instanceof class)。但是在這裡,被檢查的類別是一個接口,應該在一個數組中,你可以在以下程式碼中看到</p>
<pre class="brush:php;toolbar:false;">abstract class Action
{
final public function call(Bone $bone)
{
$sites = $this->getSites($bone);
foreach ($sites as $site) {
if (!$site instanceof Site) {
throw new \Exception("Invalid entry");
}
}
}
}
class BonesSites
{
public function getSites(string $site): array
{
if ($site === 'Egypt') {
return [
[
'siteId' => 1,
'name' => 'Cairo',
'bone' => 'T-Rex bones',
],
[
'siteId' => 2,
'name' => 'Giza',
'bone' => 'Raptors bones',
],
[
'siteId' => 3,
'name' => 'Alexandria',
'bone' => 'Bronchiosaurus bones',
],
];
}
return ['error' => 'Site not found!'];
}
}
interface Bone
{
public function getName(): string;
}
interface Site
{
}</pre>
<p>有什麼辦法在陣列中回傳一個介面嗎? </p>
您需要建立一個名為Site的額外類,並傳回一個物件數組。
然後傳回網站陣列: