Как сослаться на экземпляр класса B в описании класса A ?

Greendrake

Новичок
Как сослаться на экземпляр класса B в описании класса A ?

Классы A и B - независимы.

Как в описании одной из функций класса A использовать значение одной из переменных экземпляра класса В, имеющегося в теле скрипта в виде переменной $b ?
 

SiMM

Новичок
Для начала методу класса A нужно передать ссылку на экземпляр класса B.
 

Greendrake

Новичок
Т. е. так : ?

PHP:
class A 
{
  var x;
  function foo(&b)
  {
    echo($b->y);
  };
}

class B 
{
  var y;
  function _B()
  {
    $this->y='fooooo';
  };
}

$b=new B;
 

SiMM

Новичок
Если забыть о синтаксических ошибках - то да. Что-то типа
PHP:
class A {
  function foo(&$b) {
    return $b->y;
  }
}

class B {
  function B() { // constructor
    $this->y = 'fooooo';
  }
}

$b = new B;
$a = new A;
echo $a->foo($b);
 

Greendrake

Новичок
Мда.... Попробовал эту схему. Дело в том, что метод foo() вызывается много раз в разных местах, как в теле скрипта, так и внутри родного класса A. И везде проставлять ссылку на $b - как-то криво. А если будет не только $b, но и $c, $d.... ?
Наверно есть более изящное решение. Например, можно ли, используя тот факт, что в скрипте экземпляр класса B один и только один, как-либо находить его и ссылаться на него автоматически?
Или, может, у меня просто структура классов построена не оптимально?
 

Andreika

"PHP for nubies" reader
PHP:
class A {
    function A(&$b,&$c,&$d) {
      $this->b = $b;
....
   }

   function foo() {

    $this->b->func();
   or
    $GLOBALS['b']->func();  // тож вариант, но некошерный 
  }
}
 
Сверху