如果我沒有理解好您有:
class FileCopier{
/* @var Source */
private $source;
/* @var Destination */
private $destination;
/* @var Config */
private $conf;
...
}
而且你要訪問從$源和目標$ $的conf? 沒有父母或其他魔法詞從其他兩個變量中訪問此$ conf。 你最好的選擇是將函數添加到資源將設置一個本地參考配置:
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
}
...
}
然後,所有你需要做的就是使用$源和$目的地之前打電話給你的二傳手。可能在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);
}
...
}
希望這會有所幫助。
你有FileCopier和資源之間的簡單assosiation,和該協會由您定義去只有一條路(從FileCopier到資源),那麼我會說,回答你的問題是:不,你不能神奇訪問FileCopier從資源,除非你明確地通過參考。 – Deleteman
不知道這是你的,但如果從資源繼承FileCopier父::的attributeName –
@The_asMan家長會的工作做了什麼,而是根據他的描述,FileCopier具有類資源的兩個屬性...所以父母是行不通的,會嗎? – Deleteman