在数据库抽象层的OOP设计中,为使用它的原始DB对象创建包装器对象是否合适?要为所有用户提供服务,请在其自身内部传递并创建一个活动连接,以便其他对象(如CRUD)可以继承它并且已经有一个打开的连接?
< - 编辑 - >
一些背景:我正在尝试构建的是db-logic和业务逻辑之间的良好分离 所以我想到创建一个表CRUD对象,由其他业务逻辑对象继承 但是当我想到与DB的连接如何转移时,问题就出现了 这些对象之间。把它作为参数传递给
并不是那么正确class TableCrud(AbstractDb $db) {...}
class BusinessObject(TableCrud $tc) { ... }
另一种方法是,如果没有一个包含数据库用户凭据的对象,那就是打开连接并让TableCrud继承它。
我确信我在这里缺少一些对象机制。
答案 0 :(得分:0)
哇哇在那里放慢脚步。一点标点符号会有很多帮助。
我认为在任何不易理解的事物之上包含额外的抽象层没有任何问题。只要确保它是必要的,它将使事情更容易理解,而不是相反。有时如果你不得不问,那已经意味着你有控制问题的边缘。
答案 1 :(得分:0)
当我编写数据库模型时,它通常是这样的:
Model.php:
include('connect.php');
class Model{}...
connect.php:
include('Database.php');
include('dblogin.db');
$db = new Database( $user, ...);
database.php中:
class Database{}
dblogin.db:
$user = user;
...etc...
tl;dr
:是的,您可以在DAL上添加抽象层。