PHP(Zend)与数据库之间的通信

时间:2012-09-17 22:47:04

标签: database sockets zend-framework

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

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

2 个答案:

答案 0 :(得分:3)

我认为你应该更多地关注Zend_Dd_Adapter作为评论部分提到的RockyFord。 当我使用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

或者在这里问:)

答案 1 :(得分: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返回响应。