Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP对象默认返回值_Php_Arrays_Object_Default Value - Fatal编程技术网

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方法。谢谢