条件多态调用的PHP文档
                
                    
                         
                        
                            
                                P粉127901279
                                2023-08-06 15:31:19
                            
                                                        [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>            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
         
        
        
     
将其分配给变量
for($items as $item) { if ($item->loggable_type === Comment::class) { /** @var Comment $loggable */ $loggable = $item->loggable; $loggable->resetDates(); } }