PHP-Dokumentation für bedingte polymorphe Aufrufe
P粉127901279
2023-08-06 15:31:19
<p>Für $item gibt es eine polymorphe aufzeichnbare Beziehung. In der Datenbank wird dies in den Feldern loggable_type und loggable_id in der Items-Tabelle gespeichert (verfügbar in PHP 8+ und Laravel). </p>
<pre class="brush:php;toolbar:false;">for($items as $item) {
// ...
if ($item->loggable_type === Comment::class) {
$item->loggable->resetDates();
}
// ...
}
</pre>
<p>Ich versuche, einen protokollierbaren Eintrag in einer Bedingung mit einem Typhinweis zu versehen und ihn als Kommentartyp festzulegen. Ich habe versucht, @var zu verwenden, aber das Schreiben wie /* @var $item->loggable Comment */ funktioniert nicht, und ich kann /* @var $item Comment */ nicht verwenden, da dadurch der Typhinweis für festgelegt wird $item statt seiner Eigenschaften. <br /><br />Ich habe darüber nachgedacht, die Bedingung in if ($item->loggable caseof Comment) zu ändern, aber ich zögere, das zu tun, denn selbst wenn Comment nicht verwendet wird, muss es sein geladen und erstellt. <br /><br />Gibt es eine Möglichkeit, $item->loggable in den Kommentar einzugeben? </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(); } }