具有多个子域的网站的程序或OOP

时间:2012-11-27 09:28:36

标签: php forms oop class subclass

简要说明

我不确定我用于这组网站的结构。我试图在这些网站中尽可能多地共享代码,以便最大限度地减少重复代码并提高效率。但是,我不确定它是否是好的OOP,因此希望听到其他一些观点,以及我是否应该改变结构。

考虑以下网站:

www.domain.com
support.domain.com
clients.domain.com
export.domain.com
etc

我首先创建了一个名为class.domain.php的类。该类包含Web应用程序的所有全局方法。

然后,对于每个子域,我创建了一个子类,例如class.www.phpclass.support.php等。

如果这些子域有任何大的扇区,那么我会创建更多的子类来减少父类的大小。

因此,我最终得到了如此类的家族树:

Class Relational Tree

每个类包含与该特定站点/部分相关的方法。这些方法包括:

  1. 收集动态数据并将其返回页面
  2. 处理表格和发送电子邮件(联系方式,支持请求等)。
  3. 安全令牌系统
  4. 登录系统
  5. 我的问题

    我不仅想知道这个结构是否合适,我还想知道我是否应该使用OOP来处理“联系”表格等事项。

    如果我对每个表单都有单独的方法,那似乎有点奢侈(并且难以维护)。表单太独特,无法通过一个全局方法进行管理,因此必须使用每个表单的唯一方法处理它们,或者为每个表单创建一个与该类无关的脚本(更容易维护)

    总结:

    1. 这种结构是一种有效且良好的OOP结构吗?
    2. 我应该在课程中使用个别方法处理我的表格,还是应该为每个表格编写单独的脚本?
    3. 先谢谢

1 个答案:

答案 0 :(得分:1)

对我来说似乎很好。

你可以通过为formprocess实现一个接口或一些抽象函数来使事情更抽象,例如。

您可以编写BaseForm,BaseForm的所有子项都需要实现“validate()”,“process()”。鉴于此,您始终可以确定您的类实现了这些方法。这样你就可以在你的行动中使用它,如

$form->validate($post_data);
if($form->isValid()){
  $form->process();
} else {
  $form->handleError();
}

因为你有可能写OOP,我建议你这样做,因为它也更容易维护它。

我仍然需要在我的工作中使用较旧的项目(如osCommerce),并且当我看到所有代码重复并且如果单个文件包含大约3000-4000行代码且if-clauses跨越千线你可以很难维护它。 所以为了你自己:坚持oop