Вызов переменной из подкласса

Ноябрь

Новичок
Вызов переменной из подкласса

PHP:
class class1{
	public $s;
	public $pc;
	public function class1(){
		$this -> pc = new podclass();
	}
}
class podclass{
	public function podclass(){
		//..
	}
	
	public function chgs(){
		echo !!!$s!!!;//как обратиться к переменной $s _экземпляра_ класса class1?
	}
}
$c1 = new class1();
$c1 -> pc -> chgs();
 
Ноябрь
хренасе термин "подкласс."

в такой архитектуре обратиться невозможно. принципы инкаспуляции не позволяют.
 
передать в конструктор podclass::__construct() ссылку на инстанцию class1
 
Я бы сделал так: в конструкторе первого класса передал нужную переменную:

$this -> pc = new podclass($this->s);

А в конструкторе второго класса извлекал эту переменную.

И вообще, при такой дурной структуре теряется всякая гибкость.
 
проблема..: я плохо проедставляю что такое __construct()..
пока что создал специальный класс Statement (с одной public переменной), создал его экземпляр в class1, и передал ссылку в экземпляр podclass.. работает (экземпляр Statement доступен из обоих классов).

пойду почитаю про __construct()..
 
Ноябрь, честное слово, с такими представлениями о ООП, как у тебя, лучше "тупо все ф-ии в кучу скидывать" (с), чем создавать такие классы. Почитай что-то сугубо теоретическое по ООП, там Гради Буча к примеру. Это не поможет тебе в ближайший год писать в ООП стиле, но поможет на будущее.

п.с. вся бодяга с ООП придумана для того, чтобы можно было создавать независимые кирпичики, из которых строить приложения. такие себе черные ящики которые не важно как устроены внутри, важно что внешний их интерфейс строго определен и стабилен. то есть чем меньше зависимостей между ними, тем лучше.
 
проблема..: я плохо проедставляю что такое __construct()..
я использую функцию с именем класса вместо __construct() :).

zerkms
инстанция это кто? (не $this случайно)

BigWindow
Так значение передастся лишь единожды.
правильно
PHP:
$this -> pc = new podclass($this);
Вот теперь ее можно в любой момент прочитать.

dimagolov
Вы бы не умничали.. кирпичики..
 
Автор оригинала: Ноябрь
Так значение передастся лишь единожды.
правильно
PHP:
$this -> pc = new podclass($this);
Вот теперь ее можно в любой момент прочитать.
И что это значит? Вы передаете в podclass класс class1. Так и нужно?
 
zerkms
То есть то, что я здесь многократно называл экземпляром..
Спасибо, буду знать:)
 
Ноябрь, я вас очень прошу, поясните пожалуйста ваш код:
PHP:
$this -> pc = new podclass($this);
 
Ноябрь
проблема..: я плохо проедставляю что такое __construct()..

я использую функцию с именем класса вместо __construct() .
Ээх, magic methods в PHP5 явно не для таких как вы вводили
 
BigWindow
Я хочу передать ссылку на переменную в др. класс. Вместо ссылок на простые типы данных передаются сами данные, а вместо сложных типов данных передаются ссылки на них (странно, что массив в php считается простым типом и тоже копируется при передаче). В итоге остаются только объкты, чтобы передать ссылку на занчение, нужно, чтобы оно находилось в объекте, $this - объект (и переменная уже там находится:)).

Pigmeich
Я вас не понял:)
 
Сверху