我在codeigntier的项目中有以下vanilla php类。该类保存一些数据并将其持久保存到__destruct
class PHPPOSCart
{
public $this->foo = 'bar';
public $this->bar = 'foo';
//Saves the state of the cart to session
public function __destruct()
{
$CI =& get_instance();
$CI->session->set_userdata('cart', serialize($this));
}
}
实施(第一次请求)
$cart = new PHPPOSCartRecv();
$cart->bar = 'foo!!!';
第二次请求:
$cart = unserialize($this->CI->session->userdata('cart'));
echo $cart->bar; //This is now foo!!!
它按预期工作。
我在php手册中阅读有关__destruct
的信息时,我很紧张订单未知,并担心在相同的设置中它不会在正确的时间存在。程序需要在许多类型的Web服务器上的许多环境中运行> = php 5.3.7。我喜欢能够让类负责持久化数据的想法,但担心它可能无法按预期工作。我已经在php 5.4,5.6和7.1上测试过没有问题。
有更好的方法可以做到这一点还是我什么都不担心?