php __destruct方法编码器3持久化对象到会话

时间:2017-10-12 19:29:49

标签: php codeigniter session

我在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上测试过没有问题。

有更好的方法可以做到这一点还是我什么都不担心?

0 个答案:

没有答案