Возвращаемое значение объекта PHP по умолчанию - PullRequest
1 голос
/ 30 августа 2010

У меня есть функция, которая возвращает массив объектов следующим образом:

<?php

function sth()
{
   return (object) array(
     "obj1" => $obj1,
     "obj2" => $obj2,
     "obj3" => $obj3
   );
}

$obj = sth();
echo $obj;

?>

Здесь я хочу определить значение по умолчанию для $ obj. Оно будет возвращать значение по умолчанию вместо $ obj1, $ obj2, $ obj3.

Как определить значение по умолчанию?

Ответы [ 2 ]

5 голосов
/ 30 августа 2010

Вам нужно добавить реальную функциональность к объекту для достижения этой цели.Простое приведение массива к объекту создает только объект, который содержит некоторые значения, он не сильно отличается от массива.Нет понятия «значения по умолчанию» для массивов или объектов, единственный способ имитировать эту концепцию - реализовать ее с использованием магических методов, в данном случае __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;
0 голосов
/ 30 августа 2010

Создайте класс, содержащий массив ваших объектов в качестве свойства.а в __toString() метод возвращает все, что вы пожелаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...