2010-08-30 4 views
1

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

<?php 

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

$obj = sth(); 
echo $obj; 

?> 

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

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

+4

Что именно вы пытаетесь сделать? У вас есть пример кода реального мира, который бы использовал это? – BoltClock

+0

Look.Now $ obj - массив объектов. Я хочу определить значение по умолчанию, например $ obj для вызова. Я не хочу касаться какого-либо объекта массива. Когда я пишу $ obj, он вернет значение по умолчанию, когда я напишу $ obj-> obj1, он вернет $ obj1. – sundowatch

+0

У меня нет идеи, что вы пытаетесь сделать. Пожалуйста, опишите, чего вы хотите достичь. Возможно, вам следует создать какую-то коллекцию (например, [коллекции Java] (http://www.google.com/search?client=opera&rls=en-GB&q=java+collection&sourceid=opera&ie=utf-8&oe=utf-8)) который хранит другие объекты и реализует метод '__toString()'? – Crozin

ответ

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; 
+0

Является ли какой-либо метод вместо использования класса? – sundowatch

+0

@sundo Вам нужно будет каким-то образом добавить метод '__toString' к объекту, если вы хотите использовать его таким образом. Класс - единственный реальный способ сделать это. – deceze

+0

@sundowatch Нет класса, это единственный способ, поскольку он может использовать магический метод __toString(). –

0

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

Смежные вопросы