ООП, класс..

Voyager2K

Новичок
ООП, класс..

PHP:
class mycls {
var $id;
var $name;

function somedo {
$this->id = 'что-то'; // эти значения откуда ни будь берутся
$this->name = 'что-то';
}
}

$ob = new mycls();
$mas = array();
$ob->somedo();
$mas[] = $ob;
Как обратится потом к массиву ?
Если сделать
forech($mas as $key => $value)
{
print_r($value);
}
то ведь $value будет не массивом, не значение... а объектом класса. $value->id не прокатывает.
 

SiMM

Новичок
> $value будет не массивом, не значение...
$value будет тем, что вернул метод mycls::somedo, т.е. в данном случае - NULL.
 

Voyager2K

Новичок
А нет, я ошибся. Все же $value->id работает.

-~{}~ 06.06.06 09:51:

SiMM, я нерпавильно написал. На скорую руку ;) присваивается сам объект.
 

Gorynych

Посетитель PHP-Клуба
Voyager2K

### удаленная глупость от слишком быстрого чтения ###

метод (функция-член класса) производит присваивание значений двум членам-данным класса.

так как оба они объявлены как публичные (ну или никак не объявлены, а значит считаются публичными), то обращение к ним и будет, $ob->id и $ob->name.

в PHP 5 объекты итерируемы, т.е. к публичным членам-данным можно обратиться и так:
Код:
$ob = new mycls();
...

foreach($ob as $key => $value) {
    print("$key => $value\r\n");
}
но это НЕ массив, это итератор по публичным данным-членам.

P.S. а вообще - фигню я спорол. Вы ж просто объект в качестве элемента массива заносите. Так что обращайтесь к нему смело, как к элементу массива, со всеми вытекающими и будет вам счастье:

Код:
$ob = new mycls();
$ob->somedo();
$mas = array();
$mas[] = $ob;

print "\$mas[0]->id = ".$mas[0]->id."\r\n";

foreach($mas as $key => $value) {
    if ( is_object($value) ) {
        print "[$key] object with:\r\n";
        foreach($value as $k => $v) {
            print("$k => $v\r\n");
        }
    }
}
 
Сверху