2013-06-01 3 views
1

Я пытаюсь создать собственный источник данных для Amazon Web Services в CakePHP. Мой подход заключается в следующем:Пользовательский источник данных в CakePHP не работает

  • Base AwsDataSource, который создает подпись, делает фактические запросы HTTP и т.д.
  • Различные источники данных для каждого продукта AWS (т.е. S3, SQS и т.д.), которые расширяют этот класс и определяют конечную точку для использования
  • Модели для таких вещей, как S3Bucket, SqsQueue, SqsMessage и так далее

Мой базовый класс DataSource выглядит следующим образом (упрощенно):

<?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; 
} 

Моя проблема приходит пытается использовать эти модели/DataSources в моем CakePHP приложение.

Я реализовал методы, названные create(), read(), update() и delete() в моем AWS источника данных, как на the CakePHP cookbook, но они, кажется, не вызывался. Я знаю это, потому что я поставил die() заявления в моем источнике данных с сообщением, и выполнение никогда не останавливается.

Я исчерпал поваренную книгу, поэтому, если кто-нибудь может показать мне, как заставить мои модели называть методы CRUD в моих классах источников данных, я был бы очень благодарен.

ответ

0

Мой плохой. Оказывается, мой подход был испорчен.

Источник данных указан в конфигурации базы данных и указан как AwsDataSource. Поэтому S3DataSource или SqsDataSource никогда не используется, даже если это то, где я определил свои методы CRUD, поэтому мое приложение никогда не покидает (потому что методы CRUD не определены в AwsDataSource, который вызывается фактическим источником данных).

Похоже, что он вернулся к чертежной доске.

Смежные вопросы