在PHP中处理具有数十(约50)个属性的客户类的推荐方法是什么?

时间:2017-01-02 08:21:49

标签: php mysql class oop

我有一个客户类,它有大约50个属性(客户详细信息)。 让客户类处于裸露状态,我担心构造函数会因为这么多属性而膨胀。 不过,我可以将这些细节分为以下类别:个人员工医疗等。

但我不知道是否将这些细节分组到单独的类中是一种有效的方法,只是思考。

这就是类中属性的样子:

class Insuree{

    protected $_photoUrl;
    protected $_refNumber;
    protected $_surName;
    protected $_otherName;
    protected $_postalAddress;
    protected $_email;
    protected $_phoneNumber;
    protected $_gender;
    protected $_occupation;
    protected $_residentialAddress;
    protected $_maritalStatus;
    protected $_placeOfBirth;
    protected $_dateOfBirth;
    protected $_idType; //Passport, Drivers license, biometric etc
    protected $_nameOfEmployer;
    protected $_addressOfEmployer;
    protected $_phoneNumberOfEmployer;
    protected $_emailOfEmployer;
    protected $_paymentMode;
    protected $_accountNumber;
    protected $_beneficiarySurName;
    protected $_beneficiaryFirstName;
    protected $_beneficiaryDateOfBirth;
    protected $_beneficiaryPhoneNumber;
    protected $_bank;

    function __construct(){}
}

class CashPlan extends Insuree
{

    function __construct()
    {
        # code...
   }
}

class HomeGoingPlan extends Insuree
{

    function __construct()
    {
        # code...
    }
}

我认为上述信息将为我要解释的内容提供一个要点。

1 个答案:

答案 0 :(得分:0)

保持属性(数据)私有,对象由他们所做的定义;不是他们怎么做的。

如果您担心初始化过长而且做得太多,我建议传递一个负责在构造函数中处理数据库的对象。这样,您的保险公司的实施可以根据需要咨询数据库,以履行其所承担的任何职责。

interface MyAppDatabase {

    public function fetchPersonalInfo();
    public function fetchMedicalInfo();

}

class Insuree
{
    private $db;

    public function __construct(MyAppDatabase $d)
    {
        $this->db = $d;
    }
}