recherche

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

Portée variable entre les blocs de code PHP

Je suis (encore) nouveau sur PHP et j'apprends au fur et à mesure.

J'ai souvent besoin de récupérer une certaine variable et d'accéder à ses propriétés.

<?php
      $id = $_REQUEST['id'];
      $user_info = get_userdata($id);

      echo('Username: '        . $user_info->user_login . "<br>");
      echo('User level: '      . $user_info->user_level . "<br>");
      echo('User ID: '         . $user_info->ID . "<br>");
      echo('First Name: '      . $user_info->user_firstname . "<br>");
      echo('Family Name: '     . $user_info->user_lastname . "<br>");
      echo('user_registered: ' . $user_info->user_registered . "<br>");
?>

Je préfère récupérer $user_info = get_userdata($id); une fois puis l'utiliser en cas de besoin Dans le même fichier, mais dans des <?php?> blocs

différents
<?php
    $id = $_REQUEST['id'];
    $user_info = get_userdata($id);
?>

<some HTML>

<?php echo $user_info->user_login; ?>

<some HTML>

<?php echo $user_info->user_login; ?>

Mais je soupçonne que $user_info ne peut pas être partagé entre les blocs car ce n'est pas global. Quelle est l’approche habituelle ?

P粉403821740P粉403821740388 Il y a quelques jours714

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

  • P粉713846879

    P粉7138468792023-10-23 13:15:37

    Vous pouvez l'utiliser à l'intérieur de blocs (boucles, instructions if) mais pas à l'intérieur de fonctions. Pour le faire fonctionner à l'intérieur d'une fonction vous devez utiliser le mot-clé global :

    $user_info ....... //declared outside
    
    function foo(){
       global $user_info // now available here too
    
       // more code
    }

    Vous pouvez en savoir plus sur la portée des variables PHP dans la documentation officielle :)< /a>

    répondre
    0
  • P粉262926195

    P粉2629261952023-10-23 09:09:44

    Vous donnez trop de sens dans votre bloc de code php.
    Ce n’est pas une chose mondiale.
    Ces blocs appartiennent au même script PHP. C'est juste une manière intelligente de générer du HTML, rien de plus. Vous pouvez le remplacer par echo HTML sans aucune différence.

    L'intégralité du script PHP est exécuté en une seule fois, plutôt que de manière itérative, comme vous pouvez l'imaginer, pensez au morceau PHP exécuté côté serveur, puis au morceau HTML exécuté côté client, puis revenez au morceau PHP côté serveur. etc. C'est faux.
    L'intégralité du script PHP est exécuté côté serveur, génère du HTML brut dans le navigateur, puis disparaît.

    C'est pourquoi vous ne pouvez pas programmer à la fois un formulaire HTML et son gestionnaire dans le même script PHP, il suffit de mettre ce dernier après le premier. Vous devez appeler à nouveau le serveur pour que le gestionnaire fonctionne correctement. Ce sera un tout autre appel, une autre instance du même script, ne sachant rien de l'appel précédent, qui est mort depuis longtemps. Voici une autre chose que vous devez savoir sur PHP :

    L'exécution du script PHP est atomique. Ce n'est pas comme une application de bureau qui s'exécute en permanence dans le navigateur, ni même un démon qui est constamment connecté à l'application de bureau. Cela ressemble plus à un utilitaire de ligne de commande : il fait son travail et se ferme. Il fonctionne de manière indépendante :

    1. Le navigateur passe l'appel
    2. PHP se réveille, crée la page HTML, l'envoie au navigateurpuis se termine
    3. Le navigateur restitue ce code HTML et l'affiche à l'utilisateur.
    4. L'utilisateur clique sur le lien
    5. Le navigateur passe l'appel
    6. Une autre instance PHP, ignorant l'appel précédent, est réveillée et ainsi de suite

    répondre
    0
  • Annulerrépondre