我有一个返回对象数组的函数:
<?php
function sth()
{
return (object) array(
"obj1" => $obj1,
"obj2" => $obj2,
"obj3" => $obj3
);
}
$obj = sth();
echo $obj;
?>
这里我想定义$ obj的默认值。它将返回默认值而不是$ obj1,$ obj2,$ obj3。
如何定义默认值?
答案 0 :(得分:5)
您需要向对象添加实际功能才能实现此目的。简单地将数组转换为对象只会创建一个包含某些值的对象,它与数组没有太大区别。对于数组或对象没有“默认值”的概念,模拟这个概念的唯一方法是使用魔术方法实现它,在本例中为__toString
。因此,您需要创建一个类似于此的类:
class ObjectWithDefaultValue {
public function __construct($params) {
// assign params to properties
...
}
public function __toString() {
return $this->obj1;
}
}
function sth() {
$obj = new ObjectWithDefaultValue(array(
"obj1" => $obj1,
"obj2" => $obj2,
"obj3" => $obj3
));
return $obj;
}
$obj = sth();
echo $obj;
答案 1 :(得分:0)
创建包含对象数组的类作为属性。并在__toString()
方法中返回您想要的任何内容。