Вы можете передать текущий объект в качестве параметра другому классу.Например:
class A
{
public function __construct()
{
$b = new B($this);
}
}
class B
{
public function __construct(A $a)
{
//some code
}
}
Но лучшим способом является создание фабричного метода в классе A, который будет инкапсулировать логику создания объекта.Например:
class A
{
protected function makeB()
{
return new B($this);
}
public function __construct()
{
$b = $this->makeB();
}
}
Конечно, как сказал @NigelRen, закрытые ссылки - плохая практика, если вы хотите использовать эти классы в других местах.Это нужно иметь в виду.