0

我试图了解 Zend 框架和数据库之间的通信实际上是如何工作的(但这并不像看起来那么容易;))。

我主要关注 Zend_Http_Client_Adapter_Socket类,尤其是 read() 函数。它以某种神奇的方式接收来自数据库的响应并设置答案的状态。但是我无法发现实际数据处理在哪里完成。如果我想控制数据库返回的代码怎么办?我希望数据库在某些特殊情况下根据数据返回 204。在哪里可以做?我看到套接字通过等待彼此的请求/响应来启用通信。但是在数据库方面到底是在哪里完成的呢?

4

2 回答 2

3

我认为您应该更多地关注评论部分中提到的 RockyFord 的 Zend_Dd_Adapter。当我使用 ZF 时,我的模型分为两部分。保存数据库数据的对象和具有保存、编辑、删除、查找等方法的映射器。所以 Mapper 正在初始化一个新的 Zend_Db_Table_Abstract。例子:

class Application_Model_DbTable_Cable extends Zend_Db_Table_Abstract
{
    protected $_name = "cable";
    protected $_primary = "ID";
}

Zend_Db_Table_Abstract 的实例应该存储在映射器中,然后可以调用,例如:

$this->dbTable->find($id);

有关更多信息,请查看 ZF 的参考指南:Zend_Db

或者在这里问:)

于 2012-09-18T07:54:48.573 回答
2

在哪里可以做?我看到套接字通过等待彼此的请求/响应来启用通信。但是在数据库方面到底是在哪里完成的呢?

您的问题确实不适用于Zend_Http_Client_Adapter_Socket与数据库有关的问题。

Zend_Http_Client_Adapter_Socket处理http连接请求/响应周期。

Zend Framework 中的所有数据库适配器主要是PHP 扩展的包装器(模拟和/或扩展函数)。(PHP 扩展注册在 php.ini 文件中,格式为extension=extension_name

我们大多数人目前都在为我们最喜​​欢的各种数据库使用 PDO 扩展。

因此,要真正回答您的问题,您需要深入研究为 PHP 创建数据库适配器。如果你真的很好奇,你可以从http://www.php.net/manual/en/internals2.pdo.php开始。

Zend_Http_Client_Adapter_Socket但是,您可以对控制器进行编码,以根据数据库查询的结果返回响应 。

于 2012-09-19T08:38:13.137 回答