【发布时间】:2019-03-15 16:28:30
【问题描述】:
我有一个数据库类,您可以在其中将表名传递给构造函数,如下所示:
$customer = new Dao("customer");
对于一些具有特殊行为的表也有专门的子类,例如:
class customerDao extends Dao{}
这样做的原因是,如果有人要插入客户,我希望每次都事先完成某些逻辑。
我的目标是允许Dao 类用于大多数表,但如果表匹配它们,则强制程序员使用这些子类之一。我想确保如果有人创建 Dao 类的对象并传入与这些子类之一对应的表名,它将实例化子类,这样就不可能插入客户预先运行此逻辑代码。有没有办法做到这一点?
如果必须,我可以只使用一组禁止的表名并在构造函数中检查匹配项,但我希望找到更优雅的解决方案。
【问题讨论】:
-
我会改变你实例化这些类的方式。我会创建某种包装器/工厂,根据参数决定要实例化的类。这个工厂可以检查这个自定义类是否存在并返回和实例。不幸的是,“强迫”程序员这不是获得优雅解决方案的最佳方式。
-
只是想知道我的回答是否有帮助?
-
@miken32 是的。在将其标记为已接受的答案之前,我只是在等着看是否还有其他答案或方法。谢谢!
标签: php class oop object inheritance