1 回答
TA贡献2011条经验 获得超2个赞
这个答案是基于我的经验和拙见,但我会尽力阐述我的论点,这样它不仅仅是一些随机的人的观点。
我不认为数据库连接一定是应用程序中的核心对象,更不用说是唯一的对象了。它期望为用户看到一个完全不同的类,因此您稍后可以为其他所有内容提供进一步的类。否则,您的应用程序最终将由 5000 行文件中的单个类组成,并且您的类将不适合在实例级别跟踪实体数据,并且您需要在方法调用中传递变量。这几乎就是 OOP 服装中的程序代码。
另外,我不认为让你的User
类继承Database
(尽管如此)是很实际的。交错数据库连接和业务逻辑对象并没有真正简化应用程序设计,实际上使某些部分变得更加困难。
数据库层本身的设计非常标准化:
每个应用程序一个连接(或更多...您可能需要连接到多个源!)
每个查询一个语句。
这正是 PDO 的工作原理。
鉴于此,让数据库类成为实体的又一个依赖项而不是它们的祖父母项会更容易。这种依赖关系的注入可以通过不同的方式完成:
使其成为类属性:
public function __construct(\PDO $connection)
{
$this->connection = $connection;
}
将其传递给他们实际需要的方法(如果不是很多):
public function getOrders(\PDO $connection)
{
$stmt = $connection->prepare('SELECT ...');
}
...或者使用您可以在 Packagist 找到的那些奇特的依赖注入容器之一。
请注意,还有对象关系映射(ORM)、活动记录模式……这些是完全不同的解决方案系列,可能适合您的需求,也可能不适合您的需求,具体取决于您的用例,但不是我在这里描述的内容。
话虽如此,很明显,您在需要的地方准备了报表。这种设计甚至不允许其他情况;-)
- 1 回答
- 0 关注
- 98 浏览
添加回答
举报