Нелогичная подмена значений переменной
Всю голову сломал, не понимаю, как так происходит. PHP 5.4 Yii 1.1.15
Есть вот такой контроллер:
class MyController extends CController {
private $_modelUser;
// для простоты понимания, перенёс это сюда
public function test() {
$modelTest = UserModule::user();
$modelTest->profile->attributes = ['firstname'=>'gon']; // для проверки
}
public function loadUser($id = null) {
if ($this->_modelUser === null) {
$this->_modelUser = UserModule::user($id);
}
return $this->_modelUser;
}
public function actionEdit() {
$model = $this->loadUser();
$this->render('edit', [
'model' => $model,
'profile' => $model->profile
]);
}
}
В UserModule::user
вытягиваются связанные таблицы user и profile вот так:
public static function user($id = null) {
//...
if (!self::$_user) {
self::$_user = User::model()->with('profile')->findbyPk(Yii::app()->user->id);
}
return self::$_user;
}
Как видно, я гружу данные пользователя и передаю в представление, а в представлении делаю вот так:
var_dump($profile->attributes);
$this->test();
var_dump($profile->attributes);
и получаю
array(2) { ["id"]=> string(1) "1" ["firstname"]=> string(5) "Admin"}
array(2) { ["id"]=> string(1) "1" ["firstname"]=> string(3) "gon"}
Вопрос: каким образом меняется переменная $profile
? Нигде ничего по ссылке не передаю.
Не могу понять, как вообще она постфактум меняется без моего ведома.
Источник: Stack Overflow на русском