帖子
帖子
用户
博客
课程
123下一页
返回列表 发新帖
显示全部楼层
1
帖子
0
勋章
33
Y币

分享PHP操作MCM中的Model

[复制链接]
发表于 2014-11-13 08:59:13
本帖最后由 八妖 于 2014-11-13 09:02 编辑


class APICloud {  
var $AppID = '自己的APPID';
var $AppKey = '自己的APPKEY';
var $AppPath = 'https://d.apicloud.com/mcm/api/';
var $timeOut = 30;
function APICloud()
{
  $this->headerInfo = array(
   'Content-Type:application/json',
   'X-APICloud-AppId:'.$this->AppID,
   'X-APICloud-AppKey:'.$this->getSHAKey()
  );
}
function getSHAKey()
{
  $time = $this->getMilliSecond();
  return sha1($this->AppID.'UZ'.$this->AppKey.'UZ'.$time).'.'.$time;
}
//毫秒
function getMilliSecond()
{
  list($s1, $s2) = explode(' ', microtime());
  return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
}
function getAll($tableName)
{
  $ch = curl_init();
  curl_setopt ($ch, CURLOPT_URL, $this->AppPath.$tableName);
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt ($ch, CURLOPT_HTTPHEADER, $this->headerInfo);
  curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);
  $result = curl_exec($ch);
  return $result;
}
function editItem($tableName,$itemId,$data=array())
{
  $ch = curl_init();
  curl_setopt ($ch, CURLOPT_URL, $this->AppPath.$tableName.'/'.$itemId);
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt ($ch, CURLOPT_HTTPHEADER, $this->headerInfo);
  curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  curl_setopt ($ch, CURLOPT_POSTFIELDS, json_encode($data));
  curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PUT");
  curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);
  $result = curl_exec($ch);
  return $result;
}
function addItem($tableName,$data=array())
{
  $ch = curl_init();
  curl_setopt ($ch, CURLOPT_URL, $this->AppPath.$tableName);
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt ($ch, CURLOPT_HTTPHEADER, $this->headerInfo);
  curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  curl_setopt ($ch, CURLOPT_POSTFIELDS, json_encode($data));
  curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PUT");
  curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);
  $result = curl_exec($ch);
  return $result;
}
function delItem($tableName,$itemId)
{
  $ch = curl_init();
  curl_setopt ($ch, CURLOPT_URL, $this->AppPath.$tableName.'/'.$itemId);
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt ($ch, CURLOPT_HTTPHEADER, $this->headerInfo);
  curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
  curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);
  $result = curl_exec($ch);
  return $result;
}
}

//测试
$test = new APICloud();
//查询列表
print_r(json_decode($test->getAll('user')));
//修改
$data = array('gender'=>"男");
print_r($test->editItem('user','5446395edbebb69b6165258f',$data));
//新增user
$newData = array('gender'=>"男",'username'=>"新增加",'password'=>"111");
print_r($test->addItem('user',$newData));
//删除user
print_r($test->delItem('user','5463f6d85845c00e5c32978b'));

测试数据库使用的是o2o中的user表。

看到有人分享C#操作MCM中的Model,就试着模仿弄了个PHP版的,测试成功,实际使用起来,感觉Restful API还是有很多要加强的,比如查询的过滤啊,字段的过滤啊,比如关联啊。。等等等等。  期待更新。

程序菜鸟,刚上手,请轻喷。。  
14
帖子
0
勋章
561
Y币
好贴!!!
14
帖子
0
勋章
561
Y币
本帖最后由 wjyefeng 于 2014-11-13 10:05 编辑

。。。。。。
53
帖子
0
勋章
522
Y币
好贴好贴好贴好贴好贴
5
帖子
0
勋章
25
Y币
弱弱地问下,这个PHP是写在服务器端的吧,和后台数据库交互是看懂了,如何与客户端交互呢?如何确定是哪个html页面里来交互?
1
帖子
0
勋章
33
Y币
逆风远行 发表于 2014-11-17 14:57
弱弱地问下,这个PHP是写在服务器端的吧,和后台数据库交互是看懂了,如何与客户端交互呢?如何确定是哪个h ...

这个主要是用来操作云端数据库的,客户端与云端交互。   
这个可以用来做后台,做管理。  
5
帖子
0
勋章
25
Y币
我要测试下,CURL到底是什么方式定位要获取的html信息。前端是在客户手机上,上面的PHP是在服务器上,这个代码是定位服务器上数据库的var $AppPath = 'https://d.apicloud.com/mcm/api/'。问题就是前端会有很多页面,这个PHP怎么确定是哪个HTML页面会发送消息过来进数据库呢?
1
帖子
0
勋章
33
Y币
这个PHP的类,不会确定是哪个HTML发消息过来数据库。   因为它只接触云端数据库,如果说数据库里保存有页面访问信息,那么就能读到。

如果想保存这样的定位信息,那么客户端访问云端数据库时,就要将页面访问信息存进数据库。 那是客户端逻辑该做的事了。  当然云端也是有LOG的,LOG会有访问操作信息,可以了解一下。
5
帖子
0
勋章
25
Y币
八妖 发表于 2014-11-18 08:04
这个PHP的类,不会确定是哪个HTML发消息过来数据库。   因为它只接触云端数据库,如果说数据库里保存有页面 ...

你的意思是HTML提交表单的时候直接进数据库,中间不通过PHP?
5
帖子
0
勋章
967
Y币
这个收藏下
123下一页
您需要登录后才可以回帖 登录

本版积分规则