Как из функции вернуть объект?

zep

Новичок
Как из функции вернуть объект?

Привет всем. подскажите пожалуйста, как из функции вернуть массив в виде объекта?
как например это делает функция mysql_fetch_object()

в духе:

function test() {
$out['n1'] = 'test n1';
$out['n2'] = 'test n2';

.......

return ....

}

$data = test();

echo $data->n1; // test n1
echo $data->n2; // test n2

P.S. Весь день рылся в мане по ПХП и перебороздил инет, ничего толком не нашёл
 

wStranger

Новичок
Ты в функции создаёшь хэш:
$out['n1']
а после вызова функции test обращаешься к результату как объекту:
$data->n1;
Если сделаешь так:
$data['n1'];
То всё бедет нормально
 

_RVK_

Новичок
zep
версия пхп?

-~{}~ 25.02.06 22:26:

для 4:
PHP:
class test_result {
    
}

function & test() {
    $res = new test_result();
    $res->t1 = 'test1';
    $res->t2 = 'test2';
    
    return $res;
}

$obj = test();
print $obj->t1;
print $obj->t2;
Для php5 можно сделать красивше с полмощью __get/__set
 

zep

Новичок
wStranger, я знаю как обращяться к хешу! Мой вопрос вообще был корректно поставлен.....

_RVK_, спасибо, это то, что я хотел
 

zep

Новичок
_RVK_, чтобы все карасиво было 8)

кстати еще вопрос, а если я хочу возращать многомерные массивы в виде объекта, как лучше сделать?

-~{}~ 25.02.06 22:50:

а если весия ПХП будет 5, будет работать эта конструкция?
 

_RVK_

Новичок
чтобы все карасиво было
странные у тебя понятия о красоте.
если весия ПХП будет 5, будет работать эта конструкция
Будет, но я бы сделал так:
PHP:
<?php
class test_result {
    
    protected $hash = array();
    
    public function __get($name) {
        return $this->hash[$name];
    }
    
    public function __set($name, $val) {
        return $this->hash[$name] = $val;
    }
    
}

function test() {
    $res = new test_result();
    $res->t1 = 'test1';
    $res->t2 = 'test2';
    
    return $res;
}

$obj = test();
print $obj->t1;
print $obj->t2;
?>
 
Сверху