PHP变量范围在代码块之间

我是PHP的新手(仍然),并继续学习。

我经常需要检索某个变量并访问其属性。

<?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>");
?>

我更喜欢一次检索$ user_info = get_userdata($ id);然后在需要时使用
在同一个文件中,但在不同的<?php?>块

<?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; ?>

但是我怀疑$ user_info不能在块之间共享,因为它不是全局的。
通常的做法是什么?

你在php代码块中有太多的意义。
这不是全球性的东西。
这些块属于同一个PHP脚本。这只是一种简单的方式来输出HTML,没有什么了。您可以用回显HTML代替它,并不会有丝毫的差别。

整个PHP脚本正在执行,而不是在迭代中执行,因为您可能会看到这一点,认为PHP块正在执行服务器端,然后HTML阻止客户端,然后返回到服务器端的PHP块上。那不对。
整个PHP脚本正在服务器端执行,从而在浏览器中使用纯HTML。

这就是为什么你不能在同一个PHP脚本中编写一个HTML表单和它的处理程序,只是在第一个PHP脚本之后放置后者。您将不得不再次调用服务器以使处理程序正常工作。它将完全是另一个调用,同一个脚本的另一个实例,而前一个脚本已经很久了 – 这是另一件你必须了解的PHP:

PHP脚本执行是原子的。它不像桌面应用程序在浏览器中持续运行,甚至是持续连接到桌面应用程序的守护程序。它更像是一个命令行实用程序 – 做它的工作并退出。它离散运行:

>浏览器发出呼叫
> PHP唤醒,创建一个HTML页面,发送到浏览器并死机
>浏览器渲染该HTML并将其显示给用户。
>用户点击链接
>浏览器进行通话
>另一个PHP实例,不知道以前的调用,唤醒等等

http://stackoverflow.com/questions/5126261/php-variable-scope-between-code-blocks

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:PHP变量范围在代码块之间