我应该将我的数据库模型分成特定于对象和特定于表的操作吗?

时间:2017-01-12 12:36:24

标签: php model-view-controller

我的数据库中有两个用户表(父子)。我希望有一些功能来检查用户是否存在,返回用户列表等,但我也希望有特定于用户的功能(在被调用的对象上操作)操作,例如获取名称,获取电子邮件,重置密码等。

目前我有这个:

<?php
class User {

    public $id;
    public $email;
    private $password;
    public $accountType;

    public function __construct(...) {
        ...
    }

    // ####### GLOBAL ####### (Static)
    // Searches for user by email
    public function findUser($email) {
       ...
    } 


    // ####### GETTERS #######
    public function getID() {
        ...
    }

    ...

    // ####### SETTERS #######
    public function setID() {
        ...
    }
}

我知道在OOP中我应该将全局函数设置为静态,但我不确定这是否是我应该在PHP中使用的。

1 个答案:

答案 0 :(得分:1)

这真的取决于你 - 实际上没有关于如何处理“表操作”的明确硬性规则(与“记录操作”不同,每个人都认为应该是表示记录的实例上的方法)。

一些例子:

  • Doctrine使用其他类执行非“记录操作”,其中“表类”仅用于实例方法。
  • Kohana ORM使用“空实例”(即没有ID值)来表示表并执行“表操作”

这是一个非常适合你的设计决定。