Alexander K.
Новичок
Как получить доступ к св-вам объекта-контейнера из метода агрегированого объекта?
Заранее извиняюсь, может вопрос ламерский, но хотелось бы знать...
Есть объект класса c1, в нём агрегируется объект c2...
Можно ли получить доступ из методов объекта c2 к св-вам объекта $с1 ?
Типа чтобы $c1->c2->m1() мог эхнуть содержимое $c1->str;
Те пара вариантов которые мне приходят в голову кажутся довольно кривыми:
1) обращаться к объекту c1 через $GLOBALS (полная бяка)
2) при инициализации c2 в конструкторе с1 передавать параметром конструктора ссылку на самого себя и в конструкторе c2 запоминать ссылку в чём-нибудь типа $this->parent_container (такой вариант тоже не очень нравится, надо заботиться о передаче ссылки
)
Вроде этого:
Заранее извиняюсь, может вопрос ламерский, но хотелось бы знать...
PHP:
class c1 {
var $c2;
var $str = 'Some string';
function c1() {
$this->c2 = new c2();
}
}
class c2 {
function m1() {
/* some code */
}
}
$c1 = new c1();
Можно ли получить доступ из методов объекта c2 к св-вам объекта $с1 ?
Типа чтобы $c1->c2->m1() мог эхнуть содержимое $c1->str;
Те пара вариантов которые мне приходят в голову кажутся довольно кривыми:
1) обращаться к объекту c1 через $GLOBALS (полная бяка)
2) при инициализации c2 в конструкторе с1 передавать параметром конструктора ссылку на самого себя и в конструкторе c2 запоминать ссылку в чём-нибудь типа $this->parent_container (такой вариант тоже не очень нравится, надо заботиться о передаче ссылки
)Вроде этого:
PHP:
class c1 {
var $c2;
var $str = 'Some string';
function c1() {
$this->c2 = new c2(&$this);
}
}
class c2 {
function c2(&$parent_container) {
$this->parent_container =& $parent_container;
}
function m1() {
echo $this->parent_container->str;
}
}
$c1 = new c1();
$c1->c2->m1();
ты в одиночку cms разрабатываешь? с какой целью? уверен что стоит ориентироваться на php5 (он далеко не на всех хостингах есть)?