gpt4 book ai didi

php - 对所有 Controller 使用单个 crud 模型,而不是对每个 Controller 使用单独的模型

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:57 26 4
gpt4 key购买 nike

所以我通常看到模型是数据库中表的表示,例如用户表,它是这样的:

class user_model {

public $id ;
public $username ;
public $password ;
public $email ;


public function save(){
$db->query(" insert into `users` (username , email , password ) values ( '$this->username' , '$this->email' , '$this->password' ) ");
}

public function delete( ){
$db->query(" delete from users where id = $this->id ");
}

}

但是这个过程非常缓慢,而且大多数模型所做的是基本的 CRUD 操作……所以我对几乎所有 Controller 都使用一个单一的 CRUD 模型,例如:

class crud_model {

public function save( $tbl , $data ){
$db->query(" insert into $tbl ( ".explode( ',' , array_keys($data) )." ) values ( ".explode( ',' , $data )." ) ");
}

public function delete( $tbl , $data ){
$db->query(" delete from $tbl where $data['column'] = $data['val'] ");
}

}

请注意这是我的模型的一个非常简化的版本,基本上它与原始代码完全不同(我在原始代码中使用事件记录并且它可以处理复杂的场景)所以忽略语法和技术错误

所以我想知道这种方法是否有问题?我错过了什么吗?

当你可以使用一个 CRUD 模型时,拥有很多模型有什么意义......这似乎是在浪费时间

最佳答案

您的方法不一定错误。作为程序员,我们希望事情保持一致,这样当您必须对代码进行修改时,您不必担心一个表模型与另一个表模型的工作方式不同。我们也很懒惰(以一种好的方式),因此您希望能够一次编写您的 CRUD 类并在任何地方使用它。您已经将这部分与您的单一类(class)想法联系起来了。

但是,如果您采用 CRUD 类,然后让所有表模型继承自它,您将获得只编写一次代码的好处,此外,如果您需要对不在基本 CRUD 范围内的表执行某些操作您可以轻松覆盖或添加到子表类中的功能的代码。

就使用模型来表示您的表的模式而言,使用您当前的方法,您无法真正地使用通用 CRUD 类来表示单个表。模型类通常会有额外的类属性,这些属性特定于所表示的表。这允许您设计您的类,以便在它们被重新使用时,开发人员可以更好地理解底层数据结构。查看原始问题中的 User 类示例。该类具有 $id$username$password 等属性。开发人员可以查看它并确切地知道创建新用户需要什么。

关于php - 对所有 Controller 使用单个 crud 模型,而不是对每个 Controller 使用单独的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34613312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com