Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Для профи > Изменение атрибутов класса


Автор: MystDeim 9.11.2007, 06:32
У меня создаются 2 объекта  класса, из второго класса я пытаюсь изменить атрибут первого, но ничего не происходит...
приведу пример:

Код

a = new class1;
b = new class2;


Код

class class1 {
    public $x; // Вот этот атрибут
    // Тут какое-то описание класса
}

Код

class class2 {
    // Тут какое-то описание класса
    function __construct() {
    $a->x = "значение";
    }
    // Тут какое-то описание класса
}


ОПП не так давно начал изучать, может чего-то не знаю, разъясните, пожалуйста.

Автор: Sannis 9.11.2007, 07:53
Прочитайте про инструкцию http://ru2.php.net/global.

Автор: skyboy 9.11.2007, 10:21
кроме global можно предложить и другое решение: инкапсулировать объект класса class1 в объекте класса class2.
Код

class class1 {
    public $x; // Вот этот атрибут
    // Тут какое-то описание класса
}
class class2 {
    // Тут какое-то описание класса
    protected $aa;
    function __construct($_aa) {
    $aa= $_aa;
    $aa->x = "значение";
    }
    // Тут какое-то описание класса
}
$a= new class1();
$b= new class2($a);
 
Кстати/, у тебя при переносе на форум из выражения типа "$a= new class1()" пропали скобки при функции-конструкторе и знак "$" возле имени переменной?

Добавлено через 22 секунды
Цитата(skyboy @  9.11.2007,  09:21 Найти цитируемый пост)
инкапсулировать 

поправка: агрегировать

Автор: MystDeim 9.11.2007, 17:29
skyboy, спасибо, не знал что так можно.

Добавлено через 8 минут и 10 секунд
Цитата

Кстати/, у тебя при переносе на форум из выражения типа "$a= new class1()" пропали скобки при функции-конструкторе и знак "$" возле имени переменной?


знак "$" почему-то исчез при копирование, может и сам забыл поставить, а скобки при описании класса, если у него нет аргументов можно же опускать!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)