搜尋

首頁  >  問答  >  主體

條件多態性呼叫的PHP文檔

<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>
P粉127901279P粉127901279474 天前516

全部回覆(1)我來回復

  • P粉063039990

    P粉0630399902023-08-07 00:09:49

    將其指派給變數

    for($items as $item) {
        if ($item->loggable_type === Comment::class) {
            /** @var Comment $loggable */
            $loggable = $item->loggable;
            
            $loggable->resetDates();
        }
    } 

    回覆
    0
  • 取消回覆