「PHP」行车服务app后端代码简析

栏目: PHP · 发布时间: 6年前

内容简介:「PHP」行车服务app后端代码简析

之前发布了一篇关于我的 行车服务 app iOS 端代码简析的文章:文章地址。 此篇是对这个项目后端 PHP 代码的简析。

iOS端代码地址: iOS代码,PHP代码。如果你觉得有帮助,希望能够点个 Star ,感谢~

笔者对于 PHP 学习也刚开始不久,所以此篇不敢妄言指导,只是把这个项目后端代码的结构、实现讲述一遍,希望大家多多指教。

适合想要自己尝试使用 PHP 搭建一个 API 项目的同学阅读。

项目结构

  • 封装好的公共文件

    • helper/

    • 这个部分包括 Mysql 交互、 JSON 包装函数、`返回结果函数。

  • 各个接口实现文件

    • interface/

    • 这个部分是各个接口的实现文件,由路由文件按需调用。

  • 入口文件,接口路由

    • receiver.PHP

    • 这个部分是整个项目的路由文件,接收请求,然后分发给各个接口实现文件。

代码实现

  • 公共文件 helper/

    这个文件封装了两个包装返回结果的函数。

    {     "msg": "ok",     "code": "1",     "data": {         "count": "3",         "points_list": [{             "id": "19",             "poi_name": "sss",             "poi_address": "sss",             "uid": "fuck",           "points": "30"         },         {             "id": "25",             "poi_name": "洗车装饰服务",             "poi_address": "北三环西路76号附近",             "uid": "B0FFHF5BKD",           "points": "30"         }]     }
    • returnData ($msg, $code, $data)

      适用于获取数据类型的接口,它带有 data 参数。

      返回结果示例:

    • common.PHP

}

- `returnMsg ($msg, $code)`: 适用于仅返回状态的接口。 返回结果示例:

{

"msg": "添加成功",

"code": "1"

}

“`

  • jsonHelper.PHP

    • arrayRecursive(&$array, $function, $apply_to_keys_also = false) 函数作用是对数组中的元素递归地进行传入的 $function 操作。

    • JSON($array) 函数用于将数组包装为 JSON 格式。

  • sqlHelper.PHP

    这个文件中对所使用数据库名称、账户信息等进行设置,大家可以按照自己的信息自行在此配置。

  • 路由文件 receiver.PHP

    case "Login": require "interface/Login.php"; break;
    • 这个文件是整个项目的调用入口,具体接口调用时的 url 示例即为: 服务器IP地址/DriverEpoch-Server/receiver.PHP

    • 本文件解析参数中的 if 参数,然后分发到对应的接口文件。

    • 例如, if=Login ,即为调用登录接口,分发到登录接口的实现文件:

  • 各个接口实现文件 interface/

    这部分我对于两个类型各选取一个接口来讲述一下。

    • 这个接口用于获取用户的所有历史足迹。

    • 参数列表:

    • 这种类型的接口比刚刚的稍微复杂一些。拿到参数后,构建一条查询语句,查询用户的所有历史遗迹:

    • user_id:用户id

    • 取到结果后,若结果条数为0,则返回结果条数为0的信息。否则,将 Mysql 返回结果的每一行都包装成为数组的一个元素,然后将数组包装为 JSON ,返回给客户端。

    • 这个接口用来为用户添加历史足迹。

    • 参数列表:

    • 很简单,解析到 POST 方式传入的各个参数之后,构建一条 Mysql 语句,作用是向对应的表插入一条数据:

      $sql = "INSERT INTO historyPlaces (user_id, latitude, longitude, place_name, place_address) VALUES ('$user_id', '$latitude', '$longitude', '$place_name', '$place_address')";
    • 执行之后,若 Mysql 表示执行成功,则返回 JSON 格式的成功信息。否则返回失败信息,此处就要使用前文提到的封装好的 工具 函数。

    • user_id: 用户id

    • latitude:纬度

    • longitude:经度

    • place_name:地点名称

    • place_address:地点地址

    • 返回状态类型: AddPlace

    • 返回状态+数据类型: GetPlaces

      $sql = "SELECT add_time,place_name,place_address FROM historyPlaces WHERE user_id = '$user_id' ORDER BY add_time";
      $places_list = null; $i = 0; $num = mysqli_num_rows($sqlResult); while($row = mysqli_fetch_array($sqlResult)) {       $places_list[$i]['add_time'] = $row['add_time'];       $places_list[$i]['place_name'] = $row['place_name'];       $places_list[$i]['place_address'] = $row['place_address'];       $i++;       if ($i >= $num){           break;       }  }  $data['count'] = $i;  $data['places_list'] = $places_list;  returnData("ok", 1, $data);

其他接口的实现文件大同小异,有一些具体的点大家可以和我继续交流。

写在最后:

  • PHP 的语法非常简单,我个人觉得不太需要刻意去看语法,有其他语言基础的同学看几份代码就可以上手写,勇于尝试,加油!

  • 我后续会再写一篇关于自己部署 LAMP 架构的 PHP 项目的教程,希望能和前文形成一个自己DIY全端项目的教程。


以上所述就是小编给大家介绍的《「PHP」行车服务app后端代码简析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据密集型应用系统设计

数据密集型应用系统设计

Martin Kleppmann / 赵军平、李三平、吕云松、耿煜 / 中国电力出版社 / 2018-9-1 / 128

全书分为三大部分: 第一部分,主要讨论有关增强数据密集型应用系统所需的若干基本原则。首先开篇第1章即瞄准目标:可靠性、可扩展性与可维护性,如何认识这些问题以及如何达成目标。第2章我们比较了多种不同的数据模型和查询语言,讨论各自的适用场景。接下来第3章主要针对存储引擎,即数据库是如何安排磁盘结构从而提高检索效率。第4章转向数据编码(序列化)方面,包括常见模式的演化历程。 第二部分,我们将......一起来看看 《数据密集型应用系统设计》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具