你让一个抽象类,如果它是不完整的,你永远不希望自己的类的实例存在。
但首先你定义证书的接口:
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