PHP OOP设计:DB主动连接

时间:2011-07-07 19:20:45

标签: php oop design-patterns

在数据库抽象层的OOP设计中,为使用它的原始DB对象创建包装器对象是否合适?要为所有用户提供服务,请在其自身内部传递并创建一个活动连接,以便其他对象(如CRUD)可以继承它并且已经有一个打开的连接?

< - 编辑 - >

一些背景:我正在尝试构建的是db-logic和业务逻辑之间的良好分离 所以我想到创建一个表CRUD对象,由其他业务逻辑对象继承 但是当我想到与DB的连接如何转移时,问题就出现了 这些对象之间。把它作为参数传递给

并不是那么正确
class TableCrud(AbstractDb $db) {...}
class BusinessObject(TableCrud $tc) { ... }

另一种方法是,如果没有一个包含数据库用户凭据的对象,那就是打开连接并让TableCrud继承它。

我确信我在这里缺少一些对象机制。

2 个答案:

答案 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上添加抽象层。