PHP对象默认返回值
我有一个函数,它返回如下的对象数组:PHP对象默认返回值,php,arrays,object,default-value,Php,Arrays,Object,Default Value,我有一个函数,它返回如下的对象数组: <?php function sth() { return (object) array( "obj1" => $obj1, "obj2" => $obj2, "obj3" => $obj3 ); } $obj = sth(); echo $obj; ?> 这里我想定义$obj的默认值。它将返回默认值,而不是$obj1、$obj2、$obj3 如何定义默认值?创建包含对象数组的类
<?php
function sth()
{
return (object) array(
"obj1" => $obj1,
"obj2" => $obj2,
"obj3" => $obj3
);
}
$obj = sth();
echo $obj;
?>
这里我想定义$obj的默认值。它将返回默认值,而不是$obj1、$obj2、$obj3
如何定义默认值?创建包含对象数组的类作为属性。在u_-toString方法中,返回您想要的任何内容。创建包含对象数组的类作为属性。在_u-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;
您需要向对象添加实际的功能来实现这一点。简单地将数组强制转换为对象只会创建一个包含某些值的对象,这与数组没有太大区别。数组或对象都没有默认值的概念,在本例中,模拟这个概念的唯一方法是使用魔术方法实现它。因此,您需要创建一个类似于以下内容的类:
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;
你到底想干什么?你有没有一个实际代码的例子可以使用它呢?瞧,$obj是一个对象数组。我想定义一个默认值,比如$obj来调用。我不想碰任何阵列对象。当我写$obj时,它将返回默认值,当我写$obj->obj1时,它将返回$obj1。我不知道你想做什么。请描述你真正想要实现的目标。也许你应该创建一些类似的集合来存储其他对象并实现_u-toString方法?好的。在问题$obj->obj1是$obj1,$obj->obj2是$obj2。。。但对于所有这些对象,我想定义一个默认值,如$obj的索引。例如,当我使用$obj而没有任何子对象时,它将返回一个字符串。您到底想做什么?你有没有一个实际代码的例子可以使用它呢?瞧,$obj是一个对象数组。我想定义一个默认值,比如$obj来调用。我不想碰任何阵列对象。当我写$obj时,它将返回默认值,当我写$obj->obj1时,它将返回$obj1。我不知道你想做什么。请描述你真正想要实现的目标。也许你应该创建一些类似的集合来存储其他对象并实现_u-toString方法?好的。在问题$obj->obj1是$obj1,$obj->obj2是$obj2。。。但对于所有这些对象,我想定义一个默认值,如$obj的索引。例如,当我在没有任何子对象的情况下使用$obj时,它将返回一个字符串。使用any方法而不是使用class吗?@sundo如果您想以这种方式使用它,您需要以某种方式向对象添加一个uu toString方法。类是实现这一点的唯一现实方法。@sundowatch no类是实现这一点的唯一方法,因为它可以使用_-toString魔术方法。好的。我明白了。我使用了_; toString方法。谢谢。是any方法而不是使用类吗?@sundo如果您想这样使用它,您需要以某种方式向对象添加一个_-toString方法。类是实现这一点的唯一现实方法。@sundowatch no类是实现这一点的唯一方法,因为它可以使用_-toString魔术方法。好的。我明白了。我使用了_; toString方法。谢谢