ran*_*zer 5 php database oop model
我一直在研究和阅读很多关于在PHP中使用单独的层来创建可维护和可读的代码.但是,我看到很多代码将实体和数据库访问放在一个类中.例如:
class User{
public $id;
public $username;
public $database;
function add(){
$database->query ....
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得这很奇怪,因为在这里你将User类与数据库元素混合在一起,这使得维护起来更加困难.
我喜欢这样工作:
这样工作如下:
$database = new Database();
$database->openConnection();
$dataUser = new DataUser($db);
$user = new User(1,"myname");
$dataUser->saveUser($user);
Run Code Online (Sandbox Code Playgroud)
所以我想知道,我是以正确的方式工作还是第一种创建代码的更好方法?我发现可能很容易维护,因为你有一个单独的实体和一个单独的数据库类来处理数据库操作.
易于维护,因为您有一个单独的实体和一个单独的数据库类
您似乎是在说您希望从Active Record方法转向数据映射器/实体/存储库方法。这是一个很好的发展方向,因为它采用了更好的关注点分离。您可以自己构建它,但您可能想看看像Doctrine这样的解决方案,它允许您执行以下操作:
$product = new Product();
$product->setName($newProductName);
$entityManager->persist($product);
Run Code Online (Sandbox Code Playgroud)
该$product实体只是一个 POPO(普通旧 PHP 对象),它包含记录数据,并且不知道它是如何持久化的,并且当需要持久化时,将其传递到实体管理器来负责存储。
| 归档时间: |
|
| 查看次数: |
1120 次 |
| 最近记录: |