我正在尝试为CakePHP中的Amazon Web Services创建一个自定义数据源。我的方法如下:
- 基本
AwsDataSource
创建签名,使实际的HTTP请求等 - 每个AWS产品(即S3, SQS等)的各种数据源,扩展该类并指定要使用的端点
-
S3Bucket
、SqsQueue
、SqsMessage
等物质的模型
我的基本数据源类看起来像这样(简化):
<?php
class AwsDataSource extends DataSource {
public $config = array(
'key' => '',
'secret' => '',
'region' => ''
);
public $endpoint;
public function signRequest($parameters) {
// generates signature
}
public function makeRequest($parameters = array(), $method = 'get') {
// generates signature and makes HTTP request to AWS servers
}
}
一个示例模型是这样的:
<?php
class SqsQueue extends AwsAppModel {
public $name = 'SqsQueue';
public $useTable = false;
}
我的问题是试图在我的CakePHP应用程序中使用这些模型/数据源。
我已经实现了方法命名为create()
, read()
, update()
和delete()
在我的AWS数据源按照CakePHP食谱,但他们似乎没有被调用。我知道这一点,因为我已经将die()
语句与消息一起放在我的数据源中,并且执行从未停止。
我已经用尽了烹饪书,所以如果有人能告诉我如何让我的模型调用我的数据源类中的CRUD方法,那么我将非常感激。
我的错。原来我的方法是有缺陷的。
数据源在数据库配置中指定,指定为AwsDataSource
。因此,从未使用过S3DataSource
或SqsDataSource
,尽管我在那里定义了CRUD方法,因此我的应用程序从未退出(因为CRUD方法没有在AwsDataSource
中定义,即调用的实际数据源)。
看起来又要从头开始了