條件多態性呼叫的PHP文檔
P粉127901279
2023-08-06 15:31:19
<p>對於 $item,存在一個多態的可記錄關係。在資料庫中,這被儲存在 items 表中的 loggable_type 和 loggable_id 欄位中(適用於 PHP 8 和 Laravel)。 </p>
<pre class="brush:php;toolbar:false;">for($items as $item) {
// ...
if ($item->loggable_type === Comment::class) {
$item->loggable->resetDates();
}
// ...
}
</pre>
<p>我正在嘗試對條件中的 loggable 進行類型提示,指定它為 Comment 類型。我嘗試使用@var,但是像/* @var $item->loggable Comment */ 這樣的寫法不起作用,而且我也不能使用/* @var $item Comment */,因為這會將類型提示設定為$item 而非其屬性。 <br /><br />我考慮將條件改為if ($item->loggable instanceof Comment),但我不太願意這樣做,因為即使不使用Comment,也需要加載和創建它。 <br /><br />是否有方法可以將 $item->loggable 的型別提示為 Comment? </p><p><code></code><code></code></p>
將其指派給變數
for($items as $item) { if ($item->loggable_type === Comment::class) { /** @var Comment $loggable */ $loggable = $item->loggable; $loggable->resetDates(); } }