Если я хорошо понимаю, у вас есть:
class FileCopier{
/* @var Source */
private $source;
/* @var Destination */
private $destination;
/* @var Config */
private $conf;
...
}
А вы хотите получить доступ к $ conf из $ source и $ destination?
Нет родительского или другого волшебного слова для доступа к этой переменной $ conf из двух других переменных.
Лучше всего добавить функцию Resource, которая установит локальную ссылку на Config:
class Resource {
/* @var Config */
protected $config;
...
function setConfig(Config $config) {
$this->config = $config;
}
...
}
Или, если конфигурация установлена в какой-то другой точке, r может измениться, или если по какой-либо другой причине вы хотите получить доступ к последней версии $ conf из своих ресурсов, вы можете вместо этого передать ссылку в FileCopier:
class Resource {
/* @var FileCopier */
protected $copier;
...
function setFileCopier(FileCopier $copier) {
$this->copier = $copier;
// and access to $this->copier->conf through a getter
// or make $conf public in FileCopier
}
...
}
Тогда все, что вам нужно сделать, - это вызвать сеттер перед использованием $ source и $ destination. Возможно в FileCopier:
class FileCopier{
...
//first case :
function setConfig($config) {
$this->config = $config;
$this->source->setConfig($config);
$this->destination->setConfig($config);
}
// Or for the second case:
function setup() {
$this->source = new Source();
$this->source->setFileCopier($this);
$this->destination = new Destination();
$this->destination->setFileCopier($this);
}
...
}
Надеюсь, это поможет.