你讓一個抽象類,如果它是不完整的,你永遠不希望自己的類的實例存在。
但首先你定義證書的接口:
interface Certificate
{
public function displayAsXML();
public function displayAsHtml();
}
所以,你可以創建一個證書基類是這樣的:
abstract class BaseCertificate implements Certificate
{
protected $isin;
protected $tradingMarket;
protected $currency;
protected $issuer;
protected $issuingPrice;
protected $currentPrice;
}
的變量必須得到保護,否則階級的後代不能訪問他們(而抽象的階級不會使用他們)。如果沒有必要,請保持私密(如果完全不使用,則將其刪除)。在interfacce定義的公共function`s必須由從這個基類擴展類來實現:
class BonusCertificate extends BaseCertificate
{
protected $bonus;
public function displayAsXML()
{
// Do your thing
}
public function displayAsHtml()
{
// Do your thing
}
}
所以你最終有三個班,第三個是GuaranteeCertificate和看起來像BonusCertificate。
不過,若你還需要「常規」證書情況存在,只需刪除從基類的abstract
並實現功能的定義,然後將displayAsXML
和displayAsHtml
函數體適當納入證書渲染類,因爲顯示器不屬於到對象類型本身的數據域。
然後將一個類型屬性添加到證書基類,以便您可以在不同類型的證書之間有所不同。
另請嘗試閱讀關於此的documentation。
也許神奇的方法__set和__get是值得關注的,你可以通過使用__set和__get方法來操作變量範圍 –
也許你能解釋一下你需要達到什麼目的? – Marcx
是否有關自動刷新數據的問題?如果這是個問題,我會嘗試使用AJAX每隔X秒更新一次(new $ object)對象。 (谷歌提供了關於AJAX的大量英特爾信息)如果你想創造一個價格歷史並且想要存儲它:使用一個數據庫,或者創建一個以時間爲關鍵的巨大數組。您希望用戶如何發佈此文檔?你的服務器在哪裏得到它?你也可能想添加一些額外的類和方法。 (例如一個文檔類,告訴關於你的文檔的所有內容)如果是關於計算所有這些?經濟?東西 - >我不能 – NikM