你可以在php.ini里启动session.auto_start=1,这样就无需每次使用session之前都要调用session_start()。但启用该选项也有一些限制,如果确实启用了 session.auto_start,则不能将对象放入会话中,因为类定义必须在启动会话之前加载以在会话中重建对象。哪位可否给个简单例子说明下?

解决方案 »

  1.   

    session_start();class A {
      var $val = 0;
      function foo() {
        echo $this->val;
      }
    }if(! $_SESSION['obj']) {
      $_SESSION['obj'] = new A;
    }
    $p = $_SESSION['obj'];
    echo $p->val++;
      

  2.   


    你这是说明能够将对象保存到session中,上面所指的不能的情况是怎样的?
      

  3.   

    你在php.ini中令
    session.auto_start=1重启web服务,然后再运行上面的代码,看有是什么结果
      

  4.   


    报错,大意是说,没有序列化。在session.auto_start=1的情况下,是否先序列化后,还是可以保存?具体如何实现?
      

  5.   

    if(!$_SESSION['obj'])
    关键在这里,如果去掉这句不管是0还是1都可以。
      

  6.   

    重新测试了,这次没问题session_start();class A {
      var $val = 0;
      function foo() {
      echo $this->val;
      }
    }if(! $_SESSION['obj']) {
      $pp = new A;
      $_SESSION['obj'] = serialize($pp);
    }
    $p = unserialize($_SESSION['obj']);
    echo $p->val++;