Dokumentasi PHP untuk panggilan polimorfik bersyarat
P粉127901279
2023-08-06 15:31:19
<p>Untuk $item, terdapat hubungan boleh rakam polimorfik. Dalam pangkalan data, ini disimpan dalam medan loggable_type dan loggable_id dalam jadual item (tersedia dalam PHP 8+ dan Laravel). </p>
<pre class="brush:php;toolbar:false;">for($item sebagai $item) {
// ...
if ($item->loggable_type === Ulasan::class) {
$item->loggable->resetDates();
}
// ...
}
</pra>
<p>Saya cuba menaip-membawa sesuatu yang boleh dilog masuk dalam keadaan, menyatakan ia daripada jenis Komen. Saya cuba menggunakan @var, tetapi menulisnya seperti /* @var $item->Loggable Comment */ tidak berfungsi dan saya tidak boleh menggunakan /* @var $item Comment */ kerana itu menetapkan petunjuk jenis untuk $item dan bukannya sifatnya. <br /><br />Saya mempertimbangkan untuk menukar syarat kepada if ($item->loggable instanceof Comment), tetapi saya enggan berbuat demikian kerana walaupun Ulasan tidak digunakan, ia perlu dimuatkan dan dicipta. <br /><br />Adakah terdapat cara untuk menaip-petunjuk $item->boleh dilog untuk Mengulas? </p><p><kod></kod><kod></kod></p>
Tugaskannya kepada pembolehubah
for($items as $item) { if ($item->loggable_type === Comment::class) { /** @var Comment $loggable */ $loggable = $item->loggable; $loggable->resetDates(); } }