Portée des variables PHP sur les blocs de code
P粉771233336
2023-08-24 13:06:58
<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>
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
:Vous pouvez en savoir plus sur la portée des variables PHP dans la documentation officielle :)
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 :