Documentation PHP pour les appels polymorphes conditionnels
P粉127901279
2023-08-06 15:31:19
<p>Pour $item, il existe une relation polymorphe enregistrable. Dans la base de données, ceci est stocké dans les champs loggable_type et loggable_id de la table items (disponible en PHP 8+ et Laravel). </p>
<pre class="brush:php;toolbar:false;">for($items as $item) {
//...
if ($item->loggable_type === Commentaire :: classe) {
$item->loggable->resetDates();
}
//...
}
≪/pré>
<p>J'essaie de taper un indice dans une condition, en le spécifiant comme étant de type Commentaire. J'ai essayé d'utiliser @var, mais l'écrire comme /* @var $item->loggable Comment */ ne fonctionne pas et je ne peux pas utiliser /* @var $item Comment */ car cela définit l'indice de type pour $item plutôt que ses propriétés. <br /><br />J'ai envisagé de changer la condition en if ($item->loggable instanceof Comment), mais je suis réticent à le faire car même si Comment n'est pas utilisé, il doit l'être chargé et créé. <br /><br />Existe-t-il un moyen de saisir un indice $item->enregistrable pour commenter ? </p><p><code></code><code></code></p>
Attribuez-le à une variable
for($items as $item) { if ($item->loggable_type === Comment::class) { /** @var Comment $loggable */ $loggable = $item->loggable; $loggable->resetDates(); } }