应该是存到对象属性中吧
你把
public function setDepartment($department)
{
$this-department=$department;
}
改成
$this-department[]=$department;
即可
private $department;
要不要改成
private $department=array();
其实无所谓
楼上解释正确,不过我补充一下.
既然初始化是在类声明之后,那么可以通过手动串行化和反串行化来达到目的.
保存的时候使用serialize来保存,提取恢复的时候使用unserialize来恢复.
当然,这个还有一个要注意的地方,需要保存的对象最好是只包含数据,意思是,不要有数据库连接资源、文件资源之类的,如果包含这些,串行和反串行的结果都是一个int 0,反串行的时候可能不能正常工作.
至于对象串行反串行的一些可定制的功能,可以参考帮助文档的这个部分:
通过定义魔术函数__sleep __wakeup来实现.
PHP的数组是支持保存对象的实例的,然后你的错误提示中也能看出是用了数组的方式来访问了一个对象.
建议你不要用对象的形式,而全部都用数组.可以用json函数来转换
$user_array=json_decode(json_encode($user_array),true);
这样一来$user_array里面就全部都是数组,其中原先对象的部分被一个包含了其所有成员属性的数组替代.
可以的 举个简单的例子给你
php
class foo
function do_foo()
echo "Doing foo.";
$bar = new foo;
$arry1=array(1,$bar);//这里将实例化的对象存入数组
var_dump($arry1);//这里打印数组结构 你会发现下标1的位置存储了一个object对象
$arry1[1]-do_foo();;//以数组形式 调用do_foo();
$bar-do_foo();//正常的调用do_foo()
//两种方式输出是一样的 充分说明 数组是可以存储对象的 希望对你的学习有帮助
//下面是输出 我自动换行分割了下 其实是一行
Doing foo.
得到一个对象的类型,使用gettype()函数:
echo?gettype(1);?//?输出integer
echo?gettype(array());?//?输出array
得到一个对象是哪个类的实例,使用get_class()函数:
$o?=?new?stdClass();
echo?get_class();?//?输出stdClass
得到一个类或对象的方法和属性,要使用反射:
class?MyClass?{
public?$var;
public?function?foo()?{}
$ref?=?new?ReflectionClass('MyClass');
$ref-getProperties();?//?会返回一组对象,用法参考PHP手册
$ref-getMethods();?//?会返回一组对象,用法参考PHP手册
$obj?=?new?MyClass();
$ref?=?new?ReflectionObject($obj);
$ref-getProperties();
$ref-getMethods();
以上就是土嘎嘎小编为大家整理的php存储对象的类相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!