Portée des variables PHP sur les blocs de code
P粉771233336
P粉771233336 2023-08-24 13:06:58
0
2
628
<p>Je suis très nouveau sur PHP et j'apprends encore. </p> <p>J'ai souvent besoin de récupérer une variable spécifique et d'accéder à ses propriétés. </p> <pre class="brush:php;toolbar:false;"><?php $id = $_REQUEST['id']; $user_info = get_userdata($id); echo('Nom d'utilisateur : ' . $user_info->user_login . "<br>"); echo('Niveau utilisateur : ' . $user_info->user_level . "<br>"); echo('ID utilisateur : ' . $user_info->ID . "<br>"); echo('Nom : ' . $user_info->user_firstname . "<br>"); echo('Nom : ' . $user_info->user_lastname . "<br>"); echo('Heure d'enregistrement : ' . $user_info->user_registered . "<br>"); ?>≪/pré> <p>Je préfère récupérer<code>$user_info = get_userdata($id);</ code> puis l'utiliser si nécessaire. </p> <pre class="brush:php;toolbar:false;"><?php $id = $_REQUEST['id']; $user_info = get_userdata($id); ?> <Un peu de HTML> <?php echo $user_info->user_login ?> <Un peu de HTML> <?php echo $user_info->user_login ?></pre> <p>Mais je soupçonne que <code>$user_info</code> ne peut pas être partagé entre les blocs car il n'est pas global. Quelle est l’approche habituelle dans cette situation ? </p>
P粉771233336
P粉771233336

répondre à tous(2)
P粉617237727

Vous pouvez l'utiliser dans des blocs de code (boucles, instructions conditionnelles), mais pas dans des fonctions. Si vous souhaitez l'utiliser dans une fonction, vous devez utiliser le mot-clé global : 

$user_info ....... //在外部声明

function foo(){
   global $user_info // 现在也可以在这里使用

   // 更多代码
}

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

P粉466909449

Vous donnez trop de sens au bloc de code php.
Ce n’est pas une chose mondiale.
Ces blocs appartiennent au même script PHP. C'est juste une bonne façon de générer du HTML et n'a aucune autre signification. Vous pouvez le remplacer par echo HTML sans aucune différence.

L'intégralité du script PHP est exécuté en une seule fois, et non de manière itérative, comme vous pouvez l'imaginer, pensez au bloc PHP exécuté côté serveur, puis au bloc HTML exécuté côté client, puis de nouveau côté serveur. où le bloc PHP est exécuté, et ainsi de suite par analogie. C'est faux.
L'intégralité du script PHP est exécuté côté serveur, et le résultat est affiché sous forme de HTML brut dans le navigateur, puis se termine.

C'est pourquoi vous ne pouvez pas écrire à 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. Ce sera un appel complètement différent, une autre instance du même script, ne sachant rien de l'appel précédent, qui est terminé depuis longtemps. C'est aussi une autre chose que vous devez savoir sur PHP :

L'exécution des scripts PHP est atomique. Ce n'est pas comme une application de bureau s'exécutant en permanence dans le navigateur, ni même comme un démon gardant une connexion persistante à l'application de bureau. Cela ressemble plus à un utilitaire de ligne de commande : faites votre travail et quittez. Il fonctionne discrètement :

  1. Le navigateur lance l'appel
  2. PHP se réveille, crée une page HTML, l'envoie au navigateuret se termine
  3. Le navigateur restitue le code HTML et l'affiche à l'utilisateur.
  4. L'utilisateur clique sur le lien
  5. Le navigateur lance l'appel
  6. Une autre instance PHP, ne sachant rien des appels précédents, se réveille et ainsi de suite
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal