Вопрос по CMap::mergeArray

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
raketa
Сообщения: 131
Зарегистрирован: 2011.07.28, 17:29

Вопрос по CMap::mergeArray

Сообщение raketa »

Есть модель АР,
с методом setPerm() в котором устанавливается свойство $this->perm
в другоv методе получаем некоторые зависимые данные и проводит некоторую обработку, код:

Код: Выделить всё

echo $this->perm->read; //выдает значение 1
foreach($data as $t) {
         $perm = CMap::mergeArray($this->perm, $t->perm);
...
...
...
}
echo $this->perm->read; //здесь выдает значение 2, происходит замена $this->perm на  $t->perm
 
подскажите пож-та почему при этом происходит изменение исходного $this->perm ?,
к примеру работает как надо если к примеру сделать так

Код: Выделить всё

        
foreach($data as $t) {
            $fperm = new CAttributeCollection();
            $fperm->copyFrom($this->perm);
            $perm = CMap::mergeArray($fperm, $t->perm);
}
 
Что я делаю не так? мне нужно чтобы небыло замены $this->perm
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: Вопрос по CMap::mergeArray

Сообщение lancecoder »

потому что объект, попробуйте так:

Код: Выделить всё

foreach($data as $t) {
         $perm = CMap::mergeArray((array)$this->perm, (array)$t->perm);
...
}
$this->perm=new stdClass($this->perm);
и скорее всего не $perm = CMap::mergeArray((array)$this->perm, (array)$t->perm);
а $this->perm=stdClas(CMap::mergeArray((array)$this->perm, (array)$t->perm));
raketa
Сообщения: 131
Зарегистрирован: 2011.07.28, 17:29

Re: Вопрос по CMap::mergeArray

Сообщение raketa »

там именно $perm
в итоге сделал так

Код: Выделить всё

$perm = new CAttributeCollection(CMap::mergeArray($this->perm->toArray(), $t->perm->toArray())); 
-
но сути, почему так происходит все равно не понял :oops: , у меня в голове сидит что в PHP когда делаешь $a = $b то $a полностью копирует $b
Ответить