Как я прокомментировал ваш вопрос, php://input
- это поток, если вы читаете из него, он очищает его.
Я никогда раньше не использовал Restler, но, глядя на несколько примеров, приведенных в их загрузке, кажется, что отправленные данные автоматически передаются в качестве параметра вашему обработчику пут ..
В примере crud Рестлера , у класса Author есть запрос пута, подобный этому:
function put($id=NULL, $request_data=NULL) {
return $this->dp->update($id, $this->_validate($request_data));
}
так что я предполагаю, что рестлер уже прочитал поток php://input
и, следовательно, опустошил его.
Итак, ваш обработчик пут должен быть больше похож на их пример:
function putpatients($id, $request_data = NULL) {
/* do something with the $request_data */
var_dump($request_data);
}
Edit: На самом деле предыдущий вопрос SO от @deceze, в котором говорится о том, почему чтение дважды из php: // input не работает - для запросов PUT - объясняет, почему ваш код работал с POST запрос. В любом случае, вы должны действительно использовать средство, предоставленное Рестлером, вместо того, чтобы заново изобретать колесо отдыха.