Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP可以像下面的代码那样存储对象状态吗?_Php_Class_Variables_Scope - Fatal编程技术网

PHP可以像下面的代码那样存储对象状态吗?

PHP可以像下面的代码那样存储对象状态吗?,php,class,variables,scope,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

我是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
您可以使用对象,然后将其存储在所需的位置。但在这种情况下,如果在取消序列化对象后尝试使用db连接,则可能会遇到问题,因为该对象的连接不是持久的


另一方面,请记住始终加载类定义,如果不加载,则在尝试取消序列化对象时会出现错误,因为php不知道已序列化的类有两件事。我认为您传递的数据不正确,并且将类设置错误:

<?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);
?>


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

对不起,我不明白你想做什么,你在哪里卡住了。。。顺便说一句,“$this->dbconn.executeQuery”不是正确的PHP语法。$this->dbconn对象和executeQuery函数有助于连接和执行数据库上的查询。他们没有问题。每当我尝试使用Person::Save时,都会遇到这个问题。事实上,我不想在每次调用时将参数传递给Person::Save。谢谢你的回答。谢谢。我要试试这个,看起来可能有用。问题可能是我构造对象的方式。我使用PHP4方式进行初始化。数据初始化没有问题,因为我使用的符号只是为了简短。再次感谢您的回复。没有问题-这应该可以工作,因为我将它上传到了测试服务器并获得了预期的响应。LMK如果这有帮助的话。我试过=:类测试器{function}构造($data){$this->data=array();$this->data['name']=$data['name'];$this->data['age']=$data['age'];}函数save(){echo'调用
;print\r($this)}$me=新测试器(array)(“name”=>“Pascal Maniraho”,“age”=>2000];$me->save();我得到了Tester对象([data]=>Array([name]=>Pascal Maniraho[age]=>2000]),再次感谢您的帮助。