Vid*_*d L 1 php static-variables
我正在用PHP构建一个POP3邮箱.我有以下文件:
现在,我有页面 mailbox.php来显示收件箱和showmail.php来显示每个邮件.用户的凭据存储在.ini文件中,并在必要时使用.问题是,我在mailbox.php和showmail.php中都有一个require_once('core.php')
我可以显示收件箱(即$ inbox有值),但是,如果我选择阅读邮件(showmail.php的弹出窗口),$ inbox是一个空数组.
$ inbox在core.php中定义为静态数组
cle*_*tus 10
静态数据仅在类的上下文中是静态的,这意味着类中的静态数据成员由该类的所有实例共享.
您似乎在谈论的是跨多个HTTP请求的数据持久性.静态数据不会为您做到这一点.这就是$ _SESSION数据的用途.
换句话说:一旦脚本完成为当前请求提供服务,它就会完全死掉.所有数据都已完全清理干净.新请求开始新鲜.
会话数据持续存在,直到PHP决定清理它或手动销毁它.通常,您只需将脚本中的所有操作都放在脚本中:
脚本1:mailbox.php
session_start();
$_SESSION['mailbox'] = array( /* messages */ );
Run Code Online (Sandbox Code Playgroud)
脚本2:showmail.php
session_start();
$mailbox = $_SESSION['mailbox'];
Run Code Online (Sandbox Code Playgroud)
有一点需要注意:如果您的脚本长时间运行,请尝试尽快放入session_commit()因为PHP中的会话访问阻止,这意味着如果另一个脚本尝试对同一用户进行session_start(),它将阻塞直到第一个脚本完成执行或释放会话.