我搜索了一遍又一遍,发现了大量的例子,但似乎每个人对如何以及何时使用会话都有不同的看法,有些人使用它,有些人说它是邪恶的……
这是我的用例。
我有一个类,它有几个变量,需要在应用程序的每个页面上使用。这些变量值是通过对我使用的API进行SOAP调用来设置的。SOAP调用相对较快,但我正在尝试了解如何避免在每个页面上调用API。我更喜欢调用一次,然后将值“存储”到某个地方。
我认为我只需要在某个Init.php页面上创建类的一个实例,进行SOAP调用,然后将整个类存储在会话中。然后在我的所有页面上都包含Init.php页面。在该页面中,我将检查会话中是否存在该类,如果存在,则将其从会话中拉出。
我知道我必须序列化\反序列化这个类才能做到这一点,但我在这里寻找一些反馈,看看这是不是满足这个用例的正确方法,或者是否有更好的选择?
我对PHP是个新手,主要是.NET爱好者,在.NET中,会话通常是最好的前进方式。
我们非常感谢您的所有意见。
谢谢
发布于 2014-07-23 17:47:45
我假设当您停留在“序列化\反序列化类”时,您的真正意思是要序列化/反序列化会话中的类实例(对象),而不是实际的类定义。在使用术语类、实例和对象时要小心,因为它们不能互换,可能会导致混淆。
对象可以很容易地存储在PHP会话中。PHP会在请求结束时自动序列化对象,并在下一个请求读取会话数据时对其进行反序列化。
session_start();
if (!isset($_SESSION['soap'])) {
$_SESSION['soap'] = doSoapRequest(); // Returns an instance of your class.
}
序列化对象时,只有类中定义的变量与类的名称一起保存。在未序列化时,类定义必须可用(即自动加载器或显式包含在脚本中)。反序列化将创建一个与先前序列化的对象具有相同数据的类实例。
https://stackoverflow.com/questions/24916429
复制