1

我正在尝试在 CakePHP 中为 Amazon Web Services 创建一个自定义数据源。我的方法如下:

  • AwsDataSource创建签名、发出实际 HTTP 请求等的基础
  • 扩展此类并指定要使用的端点的每个 AWS 产品(即 S3、SQS 等)的各种数据源
  • 诸如S3Bucket,SqsQueueSqsMessage的模型

我的基本数据源类看起来像这样(简化):

<?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 应用程序中使用这些模型/数据源。

我已经按照CakePHP 食谱在我的 AWS 数据源中实现了名为create()、和的方法read(),但它们似乎没有被调用。我知道这一点是因为我已经在我的数据源中放入了一条带有消息的语句,并且执行永远不会停止。update()delete()die()

我已经用完了这本食谱,所以如果有人能告诉我如何让我的模型在我的数据源类中调用 CRUD 方法,那么我将不胜感激。

4

1 回答 1

0

我的错。原来我的方法是有缺陷的。

数据源在数据库配置中指定,并指定为AwsDataSource. 因此,S3DataSourceorSqsDataSource从未使用过,即使我在那里定义了我的 CRUD 方法,因此我的应用程序永远不会退出(因为 CRUD 方法未在中定义AwsDataSource,实际数据源被调用)。

看起来它又回到了绘图板上。

于 2013-06-01T20:55:02.500 回答