比如,有个user对象,包括name属性,setName(),getName()方法,pass属性,等等,能储存整个这个对象吗,能储存的话,post一个name过来,我怎么取出这个对象,通过getName()方法匹配是哪个对象 

解决方案 »

  1.   

    好象 post 只能传字符串,对象、链表、数组、堆盏、队列都不能 post
      

  2.   

    想要储存对象,可以使用serialize()/unserialize()函数,它可以将一个对象序列化为一个字符串,并可以从字符串中还原。如果对象成员都是public的,那也可以用json_encode()/json_decode()来实现。
      

  3.   


    必须要将这个对象存储在SESSION中或者序列化为字符串,然后在接收端进行反序列化,再进行取值即可:
    发送端:
    //假设user对象是一个class类型
    $obj = serialize(user);//从而得到序列化后的字符串
    //将$obj以name=$obj的形式进行post接收端(也可以以get方式进行传值):
    $result=unserialize($_POST['name']);
    echo $result->getName();
      

  4.   

    又写了一个测试代码,你试一下:
    <?php
    class user
    {
        private $name='skyaspnet';
        
        function getName()
        {
            echo $this->name;
        }
    }
    $obj=new user();
    $seStr= serialize($obj);
    echo $seStr.'<br />';
    echo unserialize($seStr)->getName();
    ?>
    //输出结果
    O:4:"user":1:{s:10:"username";s:9:"skyaspnet";}
    skyaspnet
      

  5.   

    php的序列化不能保存序列化方法(function),只能是属性,这点不如python
    反序列化时,对应的程序端要用原始类的结构文件