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

Ноябрь

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

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();
 

Pigmeich

Новичок
Ноябрь
хренасе термин "подкласс."

в такой архитектуре обратиться невозможно. принципы инкаспуляции не позволяют.
 

zerkms

TDD infected
Команда форума
передать в конструктор podclass::__construct() ссылку на инстанцию class1
 

BigWindow

Новичок
Я бы сделал так: в конструкторе первого класса передал нужную переменную:

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

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

И вообще, при такой дурной структуре теряется всякая гибкость.
 

Ноябрь

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

пойду почитаю про __construct()..
 

dimagolov

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

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

Ноябрь

Новичок
проблема..: я плохо проедставляю что такое __construct()..
я использую функцию с именем класса вместо __construct() :).

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

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

dimagolov
Вы бы не умничали.. кирпичики..
 

BigWindow

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

Ноябрь

Новичок
zerkms
То есть то, что я здесь многократно называл экземпляром..
Спасибо, буду знать:)
 

BigWindow

Новичок
Ноябрь, я вас очень прошу, поясните пожалуйста ваш код:
PHP:
$this -> pc = new podclass($this);
 

Pigmeich

Новичок
Ноябрь
проблема..: я плохо проедставляю что такое __construct()..

я использую функцию с именем класса вместо __construct() .
Ээх, magic methods в PHP5 явно не для таких как вы вводили
 

Ноябрь

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

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