不同类中的冗余MySQL查询


Redundant MySQL queries in different classes

我正在创建一个使用8个类的PHP Web应用程序(后面还会有更多)。我意识到,所有这些类访问数据库的功能基本相同:get_single、get_list、insert、update和delete。

哪个数据库表被寻址,哪个字段被选择,当然每一类都是不同的。

例如:

function get_single($conn) {
    $sql = $conn->prepare('SELECT id_person, join_date, img_profile, img_header, firstname, familyname, nationality, mail, password, birthday FROM person WHERE id_person = ?');
    $sql->bind_param('i', $this->id);

    $sql->execute();
    $sql->bind_result($this->id, $this->join_date, $this->profile_img, $this->header_img, $this->firstname, $this->familyname, $this->nationality, $this->mail, $this->password, $this->birthday);
    $sql->fetch();
    return $this;
}

我问自己,我是否可以或应该为所有类编写一个函数,比如这样的:

function get_single($id, $conn, $query) {
    $sql = $conn->prepare($query);
    $sql->bind_param('i', $id);

    $sql->execute();
    $sql->bind_result(/* ??? */);
    $sql->fetch();
    return /* ??? */ ;
}

然后呼叫

$foo = new Foo(array('id' => $bar));
$foo = get_single($foo->id, $conn, $qry_single_foo);

这样我就可以

  • 集中存储所有SQL查询
  • 减少代码总量
  • 提高可读性。。。也许

或者我应该有一个这些类继承自的父类吗?

或者使用设计模式?也许是装修工?(很抱歉,我知道那里很不存在)

现在我意识到用不同的方式做这件事可能会更容易,我有点被这些可能性淹没了。

想法?

感谢

您可以使用web MVC框架或ORM库。

请检查一些可以与应用程序集成的ORM库。

ORM

  • 条令
  • 推进
  • PHP活动记录