侧边栏壁纸
博主头像
小斯小站 博主等级

用心分享技术

  • 累计撰写 36 篇文章
  • 累计创建 73 个标签
  • 累计收到 6 条评论

目 录CONTENT

文章目录

深入浅出valine(三)编写代码

SCH小斯
2024-04-25 / 0 评论 / 0 点赞 / 10 阅读 / 8651 字
温馨提示:
本文最后更新于 2024-05-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

如果前面的步骤你已经完成了,那么在这个PHP项目中,你已经安装了LeanCloud的SDK,这篇文章将开始编写PHP的代码

拓展检查

在编写代码之前,需要检查一些拓展是否启用,编辑php的配置文件,如果你不知道配置文件的位置,先执行这个命令

Windows

php -i | findstr php.ini

Linux

php -i | grep php.ini

配置文件位置

其中有个Loaded Configuration File,后面的路径就是配置文件,编辑这个文件,向下翻可以找到很多extension开头的行

拓展列表

将curl取消注释,Windows系统中还需要将openssl取消注释

创建文件

在项目中创建一个php文件,可以命名为main.phpindex.php,这里我命名为main.php,在文件中加入基本标志

<?php

接下来让composer装的包能够自动加载

include "vendor/autoload.php";

初始化客户端

使用LeanCloud的SDK之前,需要先初始化LeanCloud的客户端

use \LeanCloud\Client;
Client::initialize("AppID","AppKey","MasterKey");

其中initialize中的3个值需要在LeanCloud后台的应用凭证中查看

查询评论

use \LeanCloud\Query;
$query = new Query("Comment");
$result = $query->find();
var_dump($result);

这段代码执行后将会输出Comment这个表中的全部数据,我实际测试中遇到了一个情况

查询异常

会出现一个错误,提示说SSL证书验证错误,解决这个问题,最简单的方式就是禁用SSL验证,编辑文件vendor/leancloud/leancloud- sdk/src/LeanCloud/Client.php,在文件中搜索CURLOPT_SSL_VERIFYPEER,可以找到这样的代码

解决SSL问题

CURLOPT_SSL_VERIFYPEER后面的true改成false即可禁用SSL检查,接下来再次运行代码,就可以看到查询到的数据

查询到的数据

可以看出,一个数组中装了很多个对象,但是这个对象不能通过基本的操作进行读取,而且如果直接将这个数据转成JSON字符串,将会丢失所有数据,那么我们需要对其遍历,做成一个新的数组

$data = [];
foreach ($result as $item) {
    $data[] = [
        "id" => $item->getObjectId(),
        "nickname" => $item->get("nick"),
        "updateAt" => $item->getUpdatedAt()->format('Y-m-d H:i:s'),
        "mail" => $item->get("mail"),
        "createdAt" => $item->getCreatedAt()->format('Y-m-d H:i:s'),
        "link" => $item->get("link"),
        "comment" => str_replace(["<", ">"], ["&lt;", "&gt;"], $item->get("comment")),
        "url" => $item->get("url")
    ];
}
echo json_encode($data);

完整代码

<?php
include "vendor/autoload.php";
use \LeanCloud\Client;
use \LeanCloud\Query;
Client::initialize("AppID","AppKey","MasterKey");
$query = new Query("Comment");
$result = $query->find();
$data = [];
foreach ($result as $item) {
    $data[] = [
        "id" => $item->getObjectId(),
        "nickname" => $item->get("nick"),
        "updateAt" => $item->getUpdatedAt()->format('Y-m-d H:i:s'),
        "mail" => $item->get("mail"),
        "createdAt" => $item->getCreatedAt()->format('Y-m-d H:i:s'),
        "link" => $item->get("link"),
        "comment" => str_replace(["<", ">"], ["&lt;", "&gt;"], $item->get("comment")),
        "url" => $item->get("url")
    ];
}
echo json_encode($data);

插入评论

插入数据的操作相对比较简单,只需要创建数据对象,填入数据,保存数据即可;首先创建数据对象

use \LeanCloud\LeanObject;
$comment = new LeanObject("Comment");

创建完对象后,通过set方法将数据填入对象中

$comment->set("comment","评论内容");

数据填完后,调用save方法将数据保存到数据库中

$comment->save();

保存时可能会出现错误,那么就需要捕获异常

try {
    $comment->save();
} catch (CloudException $e) {
    echo $e->getMessage();
}

完整代码

<?php
include "vendor/autoload.php";
use \LeanCloud\Client;
use \LeanCloud\CloudException;
use \LeanCloud\LeanObject;
Client::initialize("AppID","AppKey","MasterKey");
$comment = new LeanObject("Comment");
$comment->set("comment","评论内容");
$comment->set("ip","127.0.0.1");
$comment->set("link","https://schhz.cn");
$comment->set("mail","schlibra@163.com");
$comment->set("nick","schlibra");
$comment->set("ua",$_SERVER["HTTP_USER_AGENT"]);
try {
    $comment->save();
} catch (CloudException $e) {
    echo $e->getMessage();
}

执行完后,进入后台,会发现数据已经插入数据库了

插入的数据

删除评论

删除数据的代码是少之又少,只需要两步即可完成;首先创建数据对象,第一个参数为数据表的名称,第二个参数为数据的ID

$comment = LeanObject::create("Comment","objectID");

创建好数据对象后,只需要对其执行destory方法即可销毁数据

$comment->destroy();

销毁操作可能会出现错误,需要捕获异常

try {
    $comment->destroy();
} catch (CloudException $e) {
    echo $e->getMessage();
}

完整代码

<?php
include "vendor/autoload.php";
use \LeanCloud\Client;
use \LeanCloud\LeanObject;
use \LeanCloud\CloudException;
Client::initialize("AppID","AppKey","MasterKey");
$comment = LeanObject::create("Comment","objectID");
try {
    $comment->destroy();
} catch (CloudException $e) {
    echo $e->getMessage();
}

执行这段代码后,进入后台会发现刚才创建的数据已经被删除了

修改评论

修改数据的代码和新建数据的代码非常类似,首先创建一个数据对象,第一个参数为数据表的名称,第二个参数为数据的ID

$comment = LeanObject::create("Comment","objectID");

创建完后,通过set方法修改需要改的值,例如我要修改评论内容

$comment->set("comment","修改后的评论内容");

修改完后,通过save方法将数据保存到数据库

$comment->save();

保存操作可能会出现错误,需要捕获异常

try {
    $comment->save();
} catch (CloudException $e) {
    echo $e->getMessage();
}

完整代码

<?php
include "vendor/autoload.php";
use \LeanCloud\Client;
use \LeanCloud\LeanObject;
use \LeanCloud\CloudException;
Client::initialize("AppID","AppKey","MasterKey");
$comment = LeanObject::create("Comment","objectID");
$comment->set("comment","修改后的评论内容");
try {
    $comment->save();
} catch (CloudException $e) {
    echo $e->getMessage();
}

执行这段代码后,可以发现后台的数据被修改了;如果这条数据是由valine创建的,那么可能会被默认设为只读,将不能通过这个方法修改,需要删除数据重新添加。

结尾

这篇文章到这里就结束了,感谢耐心阅读,如果遇到问题可以在下方评论区中讨论。

0

评论区