0

我创建了一个旨在由用户实现的界面。我唯一真正的要求是用户实现 Save() 和 Load() 方法。现在保存很简单,但我遇到的问题是 Load()。

为了让 Load() 成为接口的一部分,它需要是一个实例方法。但它的本质是返回一个从数据库加载的新对象。这意味着 Load() 需要定义为静态的。接口不强制执行静态方法。

如何要求实现接口的用户为 Load() 编写自己的代码?

我正在使用 PHP5.4,它确实要求在子类中遵循构造函数定义,因此一个想法是将其更改为抽象类并定义一个带有 $id 变量的构造函数。如果是null我们创建一个新对象,如果已设置则加载该对象。我更愿意将此设置保留为界面。还有一些歧义和一些用户错误地实现他们的构造函数的担忧。更容易记录和描述load()应该做什么。

4

1 回答 1

1

为什么“返回对象的方法”立即意味着它必须是静态的?静态不是对象创建的一揽子“首选”——它实际上服务于特定目的。

反正。没有什么能阻止您定义一个需要实现静态方法的接口,如下所示,如果您愿意的话:

interface MyTestInterface {
   public static function Load();
}
class MyTest implements MyTestInterface {
   public static function Load() { 
       echo "Test";
   }
}

小提琴:http ://codepad.viper-7.com/xcoQZh

当方法是静态的时,没有什么能阻止您通过接口或抽象类来定义需要实现的方法。但是,考虑到这种情况下的实际static使用......

于 2013-05-28T18:17:28.367 回答