Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Копия или указатель, Вопрос на засыпку 
:(
    Опции темы
ShurikA
Дата 23.9.2008, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Есть следующиe 2 классa:
Код

class classA {
...
...
...
private $_arr = array();

private $_classBObj;

function __constructor(){
   $this->_classBObj = new classB();
}

function setArray()
    $this->_classBObj->setArray($this->_arr);
    $this->_classBObj->changeArray();
}

class classB {
...
...
...
private $_arr = array();

function setArray($arr)
    $this->_arr = $arr;
}

function changeArray(){
    //не важно каким образом меняет массив
    $this->_arr = "whatever";
}


Изменится ли массив в обьекте класса А?

(нужно что бы не менялся)

Это сообщение отредактировал(а) ShurikA - 23.9.2008, 23:04


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Sunvas
Дата 23.9.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: нет
Всего: 89



Нет. Не изменится. С чего вдруг?

Добавлено через 1 минуту и 25 секунд
Проверить не судьба?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
ShurikA
Дата 23.9.2008, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Цитата(Sunvas @  23.9.2008,  21:54 Найти цитируемый пост)
Проверить не судьба? 

Да вот в том то и дело что меняется... Не могу понять почему.


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Sunvas
Дата 24.9.2008, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: нет
Всего: 89



ShurikA, у тебя класс в классе что-ли?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
ShurikA
Дата 24.9.2008, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Цитата(Sunvas @  23.9.2008,  23:05 Найти цитируемый пост)
ShurikA, у тебя класс в классе что-ли? 

В каком смысле?
У меня один обьект держит в себе инстанс вротого.

Добавлено через 43 секунды
Точнее массив таких инстансов.


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
sTa1kEr
Дата 24.9.2008, 10:47 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



1. Код полностью не рабочий. 
Какие фигурные скобки куда относятся не понятно. 
Конструктор класса пишется __construct(), а не __constructor().
2. Где код по которому делалась проверка на изменение массива из classA? Т.е. с чего вы взяли, что он меняется?
3. Разделом вы явно ошиблись.

Если хотите что бы вам помогли найти ошибку, то нужно приводить рабочий кусок кода и актуальный результат выполнения этого кода. Пример:
Код

class classA
{
    private $_arr = array();
    
    private $_classBObj;

    function __construct()
    {
        $this->_classBObj = new classB();
    }

    function setArray()
    {
        $this->_classBObj->setArray($this->_arr);
        $this->_classBObj->changeArray();
    }
}

class classB
{
    private $_arr = array();
    
    function setArray($arr)
    {
        $this->_arr = $arr;
    }

    function changeArray()
    {
        
        $this->_arr[] = "whatever";
    }
}

$a = new classA();
$a->setArray();
var_dump($a);

Вывод:
Код

object(classA)#1 (2) {
  ["_arr:private"]=>
  array(0) {
  }
  ["_classBObj:private"]=>
  object(classB)#2 (1) {
    ["_arr:private"]=>
    array(1) {
      [0]=>
      string(8) "whatever"
    }
  }
}


PM MAIL   Вверх
Vidocq
Дата 25.9.2008, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



Парни, а какая версия пхп? не 5.х ли? =) Ибо в 5 пхп объекты передаются по ссылке, а не по значению.


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
lukas
Дата 25.9.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: нет
Всего: 15



Цитата(Vidocq @  25.9.2008,  16:19 Найти цитируемый пост)
Парни, а какая версия пхп? не 5.х ли? =) Ибо в 5 пхп объекты передаются по ссылке, а не по значению. 



в данном случае это не имеет значения...


$this->_arr и  $this->_classBObj->_arr - разные вещи...


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1304 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.