у меня есть один основной класс, в нём создаётся ещё один класс, только у меня нет доступа к его свойстам! как это сделать подскажите!
PHP: <?php class A { public $b; public function __construct(){ $this->b = new B(); } public function getAttrB(){ return $this->b->attr; } } class B{ public $attr='attr'; } $a = new A(); echo $a->getAttrB(); ?>
Alex_@ если вы заранее не предполагаете какие свойства будут у внутреннего класса, то не сможете добраться до него извне. Скажу больше: если вы заранее не знаете свойств класса, то и не сможете их испльзовать извне =) Компьютер не телепат, ему надо конкретно говорить, что и как делать.
Padaboo ну ты должен как-то решить, что из свойств ты будешь использовать. Или ты предлагаешь пройтись по всем свойствам скопом? А если ты заранее знаешь, что тебе будет передан класс, в котором ты хочешь использовать такое-то свойство, то можно указать это сразу...
У меня есть класс А, внутри которого я создаю класс Б и я не могу использовать свойства класса Б внутри класса А, мне ошибку выдаёт! как быть?
Alex_@ убитсья или привести код в студию, то что вы гвоорить - бред сивой кобылы, похоже на троллинг.
Пиши грамотно. У тебя есть объект a класса A, в методе которого ты создаешь объект b класса Б. Было бы нефигово узнать какую именно ошибку ты получил. Мы должны догадываться сами? Может ты тот ещё косячник. Нужные свойства класса Б должны быть объявлены как public ИЛИ ты должен обращаться к ним не напрямую, а через public методы Б.
Если доступ к свойствам b нужен только из a, а "снаружи" не нужен, то можно поколдовать с общим классом-предком и словом protected PHP: <?php error_reporting(-1); class CommonParent { protected function get($name) { return $this->$name; } } class B extends CommonParent { protected $x=10, $y=20, $z=30; } class A extends CommonParent { private $b; public function __construct() { $this->b = new B(); } public function printX() { echo 'x = ' . $this->b->get('x'); } } $a = new A(); $a->printX(); выведет "x = 10" и функция get() и свойство x объявлены как protected, благодаря этому все работает, а извне $b->x никак не достать. жопка прикрыта.