I am new to PHP (still) and keep learning.
I often have to retrieve a certain variable and access its properties.
<?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>");
?>
I would prefer to once retrieve $user_info = get_userdata($id); and then use it when needed
in the same file but in different <?php?> blocks
<?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; ?>
But I suspect $user_info cannot be shared between blocks because it is not global.
What is usual practice for that?
You’re putting too much meaning in the php code blocks.
It’s not something that global.
These blocks belong to the same PHP script. It’s just a neat way to output HTML, nothing more. You can substitute it with echoing the HTML and there will not be the slightest difference.
The whole PHP script is being executed at once, not in iterations, as you probably picture this, thinking that PHP blocks are being executed server-side, then HTML blocks client-side, and then back to PHP blocks on the server side and so on. That’s wrong.
The whole PHP script is being executed on the server side, resulting with pure HTML in the browser, and then dies.
That’s why you can’t program both an HTML form and its handler in the same PHP script by just placing the latter one right after the former. You have to make another call to the server to make the handler work. It will be another call completely, another instance of the same script, knowing nothing of the previous call which is long dead already. And that’s another thing you have to know about PHP:
PHP script execution is atomic. It’s not like a desktop application constantly running in your browser, or even a daemon with persistent connection to your desktop application. It’s more like a command-line utility – doing its job and exits. It runs discretely: