Внутренний пост данных [Kohana 3.1] - PullRequest
3 голосов
/ 31 мая 2011

В платформе Kohana 3.1.x.

В чем преимущества отправки данных с внутренними запросами, подобными этому

$post = Request::factory('module/data')
        ->method(Request::POST)
        ->post(array('some' => 'random data'))
        ->execute()
        ->response;

, если вы могли бы просто отправлять такие данные

Module::instance()->data(array('some' => 'random data'));

В этом примере Module - это случайный модуль, а data - это какой-то случайный метод.

Я назову это Module через ajax и внутренние запросы.Я планирую разработать RESTful API.

ВОПРОС IS: зачем использовать HMVC вместо прямого использования внутреннего класса API

Ответы [ 3 ]

1 голос
/ 31 мая 2011

Поскольку они внутренние запросы, дополнительных HTTP-запросов не делается .

Возможно, вы захотите взглянуть на Request_Client_Internal и сравнить его сRequest_Client_External.После этого вы должны почувствовать себя просветленным:)

Редактировать:

Вы должны знать, что запросы AJAX - не единственные "внешние запросы HTTP".cURL, PECL HTTP, file_get_contents () и другие функции PHP также будут отправлять внешний HTTP-запрос (имхо, вам следует прочитать RFC 2616, чтобы понять, как на самом деле работает HTTP).

0 голосов
/ 31 мая 2011

Я бы прокомментировал вышесказанное, что сказал Биакаверон, но пока не могу, поэтому я назвал это ответом. @stacknoob: Не могли бы вы использовать Module::instance()->data(array(...)) в качестве действия контроллера? Вы могли бы - с некоторым дополнительным кодом. Вместо этого, как уже сказал biakaveron, вы можете сохранить логику кода и заставить действие возвращать одинаковый результат для запросов AJAX и HMVC. В одном месте. СУХОЙ + ПОЦЕЛУЙ.

0 голосов
/ 31 мая 2011

С вызовами HMVC вы можете использовать один и тот же контроллер как для Ajax, так и для внутренних запросов. Кроме того, он может обрабатывать стандартные (не ajax) http-запросы, например, отправку формы. Комплексное решение, единая точка входа.

Если вам не нужны вызовы HMVC, вам потребуется один вызов для внутреннего запроса (где-то в базовом контроллере), а другой - в специальном контроллере Ajax. Также могут возникнуть проблемы с рендерингом данных (обычно в вызовах HMVC и ajax используются разные шаблоны). Это не СУХОЙ.

...