PHP可以像以下代码一样存储Object状态吗?

时间:2009-06-30 14:31:41

标签: php class variables scope

我是PHP的新手,我问我是否可以为对象内的所有数据初始化一次并稍后使用

<?
class Person(){

   private $data;//private or public
   function Person($data){
       $this->data['name'] = $data['name'];
       ....

   }

   function save(){
      $this->dbconn.executeQuery('insert into ... values('$this->data['name']',...));
      //some object to connect and execute query on a database.
   }

}
?>

$me = new Person(array(['name']=>'my fname my lname',...));
  $me->save();

//print_r($me) shows that $data has no initialized values

我该如何解决这个问题。如果您知道询问相同问题的链接,请将其复制并粘贴到此处。谢谢。

2 个答案:

答案 0 :(得分:1)

两件事。我认为你错误地传递了数据,并且错误地设置了你的类:

<?php
class Person {
    function __construct($data){
        $this->data = array();
        $this->data['name'] = $data['name'];
    }

    function save(){
        // Do something here.
    }
}

$info = array();
$info['name'] = "Joe Blogs";

$someone = new Person($info);
print_r($someone);
?>

对我来说,这会打印出应有的信息。

答案 1 :(得分:0)

您可以使用serialize然后将对象存储在所需位置。但在这种情况下,如果在反序列化对象后尝试使用db连接,则可能会遇到问题,因为该对象的连接不是持久的。

另一方面,记得总是加载类定义,如果不是当你尝试反序列化对象时会出现错误,因为php不会知道你序列化的类