我有兩個類實現相同的接口。在兩個類之間傳遞變量
在第一類中,我有一個名爲author的數組變量。通常在相同類中的兩個不同函數之間傳遞變量時,一旦設置,就使用$this->author;
。
這似乎不適用於兩個類之間。有人可以澄清我將如何從第一課的第二課中調用一個變量嗎?
謝謝!
我有兩個類實現相同的接口。在兩個類之間傳遞變量
在第一類中,我有一個名爲author的數組變量。通常在相同類中的兩個不同函數之間傳遞變量時,一旦設置,就使用$this->author;
。
這似乎不適用於兩個類之間。有人可以澄清我將如何從第一課的第二課中調用一個變量嗎?
謝謝!
http://php.net/manual/en/language.oop5.php面向對象的設計概念的nomanclature。
當您使用$this->author
時,您不會在函數之間傳遞變量。這兩個函數引用了這兩個函數所屬的對象的相同變量。
author
是該類的一個屬性。
沒有地方可以放置變量並讓它由兩個不同的類引用。但是,您可以在一個類上使用public
屬性,並引用來自其他任何類的屬性。
http://php.net/manual/en/language.oop5.visibility.php公共房地產。
但是,該技術並沒有捕捉到你有兩個函數引用一個公共屬性的方案。
您可以使用性狀(水平繼承)http://php.net/manual/es/language.oop5.traits.php
雖然它只會幫助你,如果你的變量只會協商,不進行修改。那是因爲,特徵允許你指定靜態屬性,但是每個使用該特徵的類都有這些屬性的獨立實例。
http://php.net/manual/es/language.oop5.traits.php#107965
這是一個例子:
trait myTrait {
public $sameVariable = 'shared';
public function getMessage() {
echo $this->sameVariable;
}
}
class A {
use myTrait;
public function getMessageA() {
echo $this->sameVariable; //Prints shared
$this->sameVariable = 'changed';
echo $this->sameVariable; //prints changed
}
}
class B {
use myTrait;
public function getMessageB() {
echo $this->sameVariable; //Prints shared
}
}
$a = new A();
$b = new B();
$a->getMessageA();
$b->getMessageB();
這允許您重用讓它變的特質,而不是複製你的代碼,但我不明白你的情況這麼好。所以這可能不是你想要的=/
在OOP中,你不能在同一個類中使用相同的變量,你應該有基類,這兩個類將擴展到基類並取值 –
你是否暗示了修改類之間的相同變量? – RomanPerekhrest
您試圖通過在實現相同接口的兩個類之間傳遞變量來實現什麼目標? – dchayka