PHP可以像下面的代码那样存储对象状态吗?
我是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
<?
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]),再次感谢您的帮助。