【发布时间】:2014-08-02 02:55:15
【问题描述】:
我有以下代码示例,它在 PHP 5.5 上按预期工作,但在托管服务器中我有 PHP 5.2.17,但它没有。
如果我重新运行它几次,我会得到我所期望的,数组会随着不同的数字变大。
但是当我在 PHP 5.2.17 上运行它时,我得到了相同的数字,因为 class A 的实例被冻结了。
此外,如果我删除这一行 $_SESSION['a'] = $a;,那么它可以在 PHP 5.2.17 上运行,但这不是我需要的。任何了解 PHP 版本的人都可以想出一种方法来管理它。谢谢
<?php
class A
{
public $var = 0;
}
session_start();
if(isset($_SESSION['a_array']))
{
$a = new A();
$_SESSION['a'] = $a;
$a->var = rand();
array_push($_SESSION['a_array'], $a);
}
else
{
$a_array = Array();
$_SESSION['a_array'] = $a_array;
}
var_dump($_SESSION['a_array']);
?>
【问题讨论】:
-
您是否试图将整个对象放入会话变量中?至少看起来是这样的。
-
我想是的,我需要从另一个脚本访问对象 $a。所以我需要这个 $_SESSION['a'] = $a;
-
你不应该那样做。制作另一个 php 并将类放入文件中。一旦你这样做,在你需要访问它的页面中包含文件/类,那么你仍然可以这样做:只要包含另一个页面,$a = new A() 就可以访问该类
-
在我这样做的实践中,这只是一个自洽的例子,所以你可以剪切和粘贴它并且它可以工作。
-
这只是强调需要有一个一致的开发和生产环境。你应该考虑运行一个虚拟机或类似的东西,它使用你在生产中使用的相同版本的软件进行开发。它会为你节省很多时间。与 5.2 相比,PHP 5.5 有很多新特性,也有很多变化。