对于这个问题,我想介绍一下我目前的设计和使用特质的想法。我想知道我对特质的理解是否正确,以及我的问题是否可以用不涉及他们的另一种设计来解决。使用PHP特性来模拟多重继承
在我的框架我目前的类层次结构是这样的:
interface IPage { /* ... */ }
interface IForm extends IPage { /* ... */ }
abstract class AbstractPage implements IPage { /* ... */ }
abstract class AbstractForm extends AbstractPage implements IForm { /* ... */ }
在我的应用程序是基于我曾经有过如下的框架:
abstract class AbstractBasePage extends AbstractPage { /* ... */ }
因此我可以添加一些此框架或其他应用程序不常见的此特定应用程序的所有页面的更多内容。这一直很好地工作,直到我按照第一个代码片段的指示实现了页面和表单的分离。现在,我结束了这样的事情:
abstract class AbstractBasePage extends AbstractPage { /* ... */ }
abstract class AbstractBaseForm extends AbstractForm { /* ... */ }
让我们在一个应用中承担应有的每一页和形式,它指出一些特别的东西是否显示在模板中的变量。我需要在AbstractBasePage
和AbstractBaseForm
中引入相同的变量。这样做会迫使我将这两个片段保持同步,这并不是很好。
我正在考虑创建一个将变量和函数公开给这两个类的特征,他们可以在相应的函数中引用它们。至少可以使用这种特性来减少代码重复,因为我可以引入一个可以被两个类调用的公共访问方法,但除了有一个体面的抽象外,不是吗?
这是什么特质应该帮助?有更合适的方法吗?