Php 在接口(OOP)中添加属性是一种好做法吗
请参见以下对象:Php 在接口(OOP)中添加属性是一种好做法吗,php,oop,zend-framework,Php,Oop,Zend Framework,请参见以下对象: interface IMedia { public function getThemed(); public function getDownloadLink(); } class Video implements IMedia { public function getThemed() {} public function getDownloadLink() {} } 如果存在一些常见属性,例如: public $size; public
interface IMedia
{
public function getThemed();
public function getDownloadLink();
}
class Video implements IMedia
{
public function getThemed() {}
public function getDownloadLink() {}
}
如果存在一些常见属性,例如:
public $size;
public $uploadedDate;
public $hitCounts;
可以将它们添加到IMedia吗?还是建议在那个地方使用抽象类?当然,一般来说,您希望尽可能抽象。因此,访问器/变体完全有意义,以避免仅对访问器/变体进行类型转换。现在可能会引入一个仅用于属性实现的抽象类。@Muneer 首先,这是不可能的。接口不允许这样做。我建议这样做:
interface IMedia {
}
abstract class AbstractMedia implements IMedia {
public $property = "value";
}
所以你的意思是,只有抽象类允许实现属性,并且应该避免从接口实现属性?@Muneer:是的,接口只允许常量和方法存根。你们需要像他建议的那个样使用抽象类。抽象类和常规类都是很好的选择。在接口中这是不可能的,PHP不允许您这样做,因为这是一个语法错误。接口中只允许使用方法和常量。如果我将IMedia接口转换为抽象类并在其中添加属性和方法,会怎么样?我会问,赢了什么?您失去了抽象,获得了一个平凡代码的实现。顺便说一句:您需要实现getter和setter,就像在Java中一样。具体计划是什么?