Code Monkey home page Code Monkey logo

leancloud-php-library's Introduction

LeanCloud PHP Library

===========================

Forked from https://github.com/apotropaic/parse.com-php-library

LeanCloud 已推出官方 php sdk, 我们推荐使用官方版本。

配置

=========================

checkout这个项目后,你需要在项目根路径创建一个文件名为AVConfig.php作为配置文件。

git clone https://github.com/killme2008/leancloud-php-library.git
cd leancloud-php-library ; touch AVConfig.php

AVConfig.php示范

填写AVConfig.php配置示范如下:

<?php namespace leancloud;

class AVConfig{

    const APPID = '';
    const MASTERKEY = '';
    const APPKEY = '';
    const AVOSCLOUDURL = 'https://leancloud.cn/1.1/';
}

?>

其中APPID就是应用Id,MasterKey为应用的Master Key,APPKEY为应用Key。这些信息都可以在应用设置的应用key菜单里找到。

你可以通过php test.php命令运行单元测试。

所有 AV 开头的类都在 leancloud 的 namespace 下。你可以 use leancloud\AVObject; 导入,或者直接 new leancloud\AVObject 来使用。

简单例子

=========================

例子在samples目录下,更多例子参考tests目录下的测试用例。每个例子前都需要导入SDK:

<?php
	include_once 'AV.php';
    ?>

对象

创建对象:

	$obj = new leancloud\AVObject('GameScore');
	$obj->score = 1000;
	$obj->name = 'dennis zhuang';
	$save = $obj->save();
	print_r($save);

更新对象:

	$updateObject = new leancloud\AVObject('GameScore');
	$updateObject->score = 2000;
	$return = $updateObject->update($objectId);

删除对象:

	$deleteObject = new leancloud\AVObject('GameScore');
	$return = $deleteObject->delete($objectId);

查询

        $query = new leancloud\AVQuery('GameScore');
    	$query->where('name','dennis zhuang');
		$return = $query->find();
		print_r($return);

各种查询条件的where方法请看AVQuery.php源码。

文件

上传文件:

	$file = new leancloud\AVFile('text/plain', 'Working at AVOS Cloud is Great');
	$save = $file->save('hello.txt');
	print_r($save);

关联文件到某个对象上:

    $obj = new leancloud\AVObject('GameScore');
    $obj->image = $obj->dataType('file', $save->objectId);
    $obj->save();

GeoPoint(地理信息位置)

	 $geo = new leancloud\AVGeoPoint(30.0, -20.0);
	 $obj->location = $geo->location;
	 $return = $obj->save();

根据地理位置查询附近的对象:

	$query = new leancloud\AVQuery('GameScore');
	$query->whereNear('location', (new leancloud\AVGeoPoint(30.0, -20.0))->location);
	$return = $query->find();

消息推送

推送消息:

	$push =new leancloud\AVPush;
	$push->alert = 'Hello from AVOS Cloud';
	$push->channels = array('foo', 'bar');
	$return = $push->send();

用户

注册用户:

    $avUser = new leancloud\AVUser;
    $avUser->email = '[email protected]';
	$user = $avUser->signup('dennis', 'password');
    print_r($user);

用户登陆:

	$loginUser = new leancloud\AVUser;
	$loginUser->username = 'dennis';
	$loginUser->password = 'password';
	$returnLogin = $loginUser->login();

重设密码:

	$user->requestPasswordReset('[email protected]');

贡献者

leancloud-php-library's People

Contributors

alexargo avatar andrewscofield avatar bingeh avatar daspecster avatar desarrolla2 avatar ericoe avatar hoseking avatar jontonsoup avatar juvenn avatar kasperpihl avatar killme2008 avatar martindavis avatar theboardsaredown avatar warnew avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

leancloud-php-library's Issues

AVQuery.php find方法需要修改

public function find(){
if(empty($this->_query)){
$request = $this->request(array(
'method' => 'GET',
'requestUrl' => $this->_requestUrl
));

  return $request;

}
else{
  $urlParams = array(
                     'where' => json_encode( $this->_query )
                     );
  if(!empty($this->_include)){
    $urlParams['include'] = implode(',',$this->_include);
  }
  if(!empty($this->_order)){
    $urlParams['order'] = implode(',',$this->_order);
  }
  if(!empty($this->_limit) || $this->_limit == 0){
    $urlParams['limit'] = $this->_limit;
  }
  if(!empty($this->_skip)){
    $urlParams['skip'] = $this->_skip;
  }
  if($this->_count == 1){
    $urlParams['count'] = '1';
  }
  //print_r($urlParams);
  $request = $this->request(array(
                                  'method' => 'GET',
                                  'requestUrl' => $this->_requestUrl,
                                  'urlParams' => $urlParams,
                                  ));

  return $request;
}

}

以上代码应该改成:

public function find(){

if(!empty($this->_include)){
    $urlParams['include'] = implode(',',$this->_include);
  }
if(!empty($this->_order)){
    $urlParams['order'] = implode(',',$this->_order);
}
if(!empty($this->_limit) || $this->_limit == 0){
    $urlParams['limit'] = $this->_limit;
}
if(!empty($this->_skip)){
    $urlParams['skip'] = $this->_skip;
}
if($this->_count == 1){
    $urlParams['count'] = '1';
}

if(!empty($this->_query)){
    $urlParams = array(
                'where' => json_encode( $this->_query )
                );
}

//print_r($urlParams);
$request = $this->request(array(
                              'method' => 'GET',
                              'requestUrl' => $this->_requestUrl,
                              'urlParams' => $urlParams,
                              ));

return $request;

}

原因: 原代码默认要指定_query才能请求order等参数 , 实际上并没有这样的要求

curl请求https报错

SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

可以通过设定证书解决:
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, true); ;
curl_setopt($c, CURLOPT_CAINFO, dirname(FILE).'/cacert.pem');

将AV*.php都放到一个文件夹,由文件夹外部的php使用AV.php会报错

Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/leancloud/AV.php on line 193

Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/leancloud/AV.php on line 193

Fatal error: Uncaught leancloud\AVLibraryException: [0]: thrown in /Applications/XAMPP/xamppfiles/htdocs/leancloud/AV.php on line 186

/Applications/XAMPP/xamppfiles/htdocs/index.php:

score = 1000; $obj->name = 'dennis zhuang'; $save = $obj->save(); print_r($save); ?>

将这个index.php扔到AV.php的同级目录就没问题,找不出原因

关于 SSL 文件位置的问题

由于我把改 SDK 放在 Leancloud 的文件夹下,导致 AV.php 第 50 行获取 pem 时获取出错。

解决办法:把第 50 行改为$cacert = getcwd().'/Leancloud/cacert.pem';

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.