这个类结构应该如何用php编写?作文,继承,装饰?

时间:2012-01-13 22:07:45

标签: php inheritance composition aggregation

我有一个数据库,人们可能同时是员工,客户和公司成员。我的管理系统允许我在独立页面上编辑PersonEmployeeCustomerMember对象的属性。

现在,我希望能够调用Person,但能够在同一页面上查看和编辑其员工,客户和成员属性。为这个场景创建一个视图是微不足道的,但我想用正确的基类,继承,组合和聚合等规范来正确地完成它。

我确实理解员工,客户和成员离不开这个人,所以对于我的管理页面,我想我应该创建一个composition的新课程UberDude人员,员工,客户和会员类别。我还想将这个新课程作为集合的一部分,以便我可以绘制一个包含所有人员的表格,看他们是员工,客户还是成员。有些东西似乎不对,我无法解决类结构的代码。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

听起来像是继承问题。您有Person,但之后可以使用EmployeeCustomer等更具体的字词来描述该人。

通常在面向对象的编程中,从基类开始(在本例中为Person),然后在扩展子类中添加属性。因此,Person可能有一个名称,Employee可能会有一个员工编号,但如果他们是Customer则不会有意义。

你可以做的是实现装饰器模式,并继续在Person类上构建。我不确定您当前是如何在当前应用程序中构建人员的个人资料的,但在伪代码中看起来如下:

<?php

$id = intval($_GET['person_id']);

$employee = new Employee(new Person($id));

这将实例化您的Person类,然后将其传递给您的Employee类,以使用特定于员工的其他属性和方法进行修饰。