recherche

Maison  >  Questions et réponses  >  le corps du texte

Documentation PHP pour les appels polymorphes conditionnels

<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>
P粉127901279P粉127901279560 Il y a quelques jours575

répondre à tous(1)je répondrai

  • P粉063039990

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

    Attribuez-le à une variable

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

    répondre
    0
  • Annulerrépondre