У меня есть простой SPA, построенный с AngularJS.
Сейчас я пытаюсь выполнить 2 простые операции в CouchDB, размещенной в Cloudant, используя файл PHP: сохранить документ и получить все документы.
Все готовые примеры CRUD-операций, использующих PHP, чрезвычайно сложны, используют несколько зависимостей, и я с ними не справился, так как PHP на самом деле не моя вещь.
Последнее, что я попробовал этот, это дает мне Cannot redeclare class Cloudant in /.../comanda/incoming/test/Cloudant.php on line 10
ошибка и мне не удалось это исправить.
Однако в коде я вижу, как они заставляют сервер входить в систему, а некоторые получают / ставят.
Это выглядит так:
class Cloudant {
function __construct($server,$db,$username,$password){
$username = 'user';
$password = 'pass';
$server = 'cloudant.com';
$db = 'dbname';
$this->server = "https://".$username.":".$password.'@'.$username.$server;
$this->db = $db;
$this->header_short = "Content-Type: application/json";
$this->header = $this->header_short."\r\nContent-Length: ";
}//curl -X PUT {USERNAME}:{PASSWORD}@{USERNAME}.cloudant.com/{DB}{/ID} -d ....
function upsert_doc( $id, $data ){ // to update - include _rev in document body
return $this->call($id, array(
'method' => 'POST',
'header' => $this->header . strlen($data) . "\r\n",
'content' => $data));
}
//curl -X GET {USERNAME}:{PASSWORD}@{USERNAME}.cloudant.com/{DB}/{ID}
function get( $id ){
return $this->call($id, array(
'method' => 'GET',
'header' => $this->header_short
));
}
Любые советы о том, как это упростить? Я ищу один PHP-файл для аутентификации + сохранение массива JSON, а другой — для аутентификации + получения всех документов.
Ошибка буквально в том, что вы не можете переопределить класс «Cloudant», потому что где-то в вашем проекте есть еще один — переименование этого класса должно помочь в этом.
Для общения с Cloudant из PHP это интерфейс HTTP, поэтому, хотя есть библиотеки, вам не обязательно нужен один для простых запросов, как вы упоминали. Я обычно использую Guzzle, но вы можете использовать расширение curl или встроенные потоковые обработчики. Некоторые примеры кода PHP, которые используют Guzzle для общения с Cloudant, находятся здесь в примере приложения, которое я создал, это может помочь вам дать некоторые подсказки: https://github.com/ibm-cds-labs/guestbook/blob/master/src/web/classes/Guestbook/CommentService.php
Других решений пока нет …