我创建了一个由用户实现的界面。我唯一真正的要求是用户实现了Save()和Load()方法。现在保存很简单,但我遇到的问题是Load()。
为了使Load()成为接口的一部分,它需要是一个实例方法。但它的本质是返回一个从数据库加载的新对象。这意味着Load()需要定义为static。接口不强制执行静态方法。
我如何要求实现该接口的用户为Load()编写自己的代码?
我正在使用PHP5.4,它确实要求在子类中遵循构造函数定义,因此我们想到将其更改为抽象类并定义一个带有$ id变量的构造函数。如果它是null
我们创建一个新对象,如果已设置,则加载该对象。我更喜欢将此设置保留为界面。还有一些关注模糊和一些用户错误地实现其构造函数的问题。记录和描述load()
应该做什么更容易。
答案 0 :(得分:1)
为什么“返回对象的方法”会立即意味着它必须是静态的?静态不是对象创建的一个“首选” - 它实际上是为特定目的服务的。
反正。如果你的心愿意的话,没有什么能阻止你定义一个需要实现静态方法的接口,如下所示:
interface MyTestInterface {
public static function Load();
}
class MyTest implements MyTestInterface {
public static function Load() {
echo "Test";
}
}
小提琴:http://codepad.viper-7.com/xcoQZh
当方法是静态的时候,没有什么能阻止你定义一个需要实现的方法,通过接口或抽象类。但是,请考虑在这种情况下实际使用static
....