本文目录一览:
- PHP中如何定义对象类型数组
- PHP数组里面存放对象
- PHP数组中可否存放对象?如果可以,那么在smarty的模板中应当如何获取对象的属性值?
- php中数组能储存对象吗
- php 中如何得到一个对象的类型
PHP中如何定义对象类型数组
应该是存到对象属性中吧 你把
public function setDepartment($department)
{
$this-department = $department;
}
改成
public function setDepartment($department)
{
$this-department[] = $department;
}
即可
private $department;
要不要改成
private $department = array();
其实无所谓
PHP数组里面存放对象
楼上解释正确,不过我补充一下。
既然初始化是在类声明之后,那么可以通过手动串行化和反串行化来达到目的。
保存的时候使用 serialize
来保存,提取恢复的时候使用 unserialize
来恢复。
当然,这个还有一个要注意的地方,需要保存的对象最好是只包含数据,意思是,不要有数据库连接资源、文件资源之类的,如果包含这些,串行和反串行的结果都是一个 int 0
,反串行的时候可能不能正常工作。
至于对象串行反串行的一些可定制的功能,可以参考帮助文档的这个部分:
通过定义魔术函数 __sleep
和 __wakeup
来实现。
PHP数组中可否存放对象?如果可以,那么在smarty的模板中应当如何获取对象的属性值?
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()
两种方式输出是一样的,充分说明数组是可以存储对象的,希望对你的学习有帮助。 下面是输出(我自动换行分割了下,其实是一行):
array(2) { [0]= int(1) [1]= object(foo)#1 (0) { } }
Doing foo.
Doing foo.
php 中如何得到一个对象的类型
得到一个对象的类型,使用 gettype()
函数:
echo gettype(1); // 输出 integer
echo gettype(array()); // 输出 array
得到一个对象是哪个类的实例,使用 get_class()
函数:
$o = new stdClass();
echo get_class($o); // 输出 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();