文章目录

  • 一、HELLO WORLD
  • 二、如何请求接口服务
  • 三、接口响应与在线调试
  • 四、简单查询例子
    • 数据库连接如何指定表名

基本配置

上传服务器以后配置根目录文件夹为public即可访问

./src/
└── app├── Api # 放置接口源代码,相当于控制器层├── Common # 公共代码目录,放置工具等├── Domain # 领域业务层,负责业务逻辑和处理├── functions.php└── Model # 数据源层,负责数据持久化存储及操作

可以尝试在宝塔里头直接编写代码

一、HELLO WORLD

vscode中安装插件

php server,php debug,php intellisense,PHP DocBlocker

/docs.php

可以访问到开发接口的接口文档及框架

在默认的接口服务类当中可以查询接口文档以及测试接口响应

注意:

!!!!!文件名要和类名一致

默认所在命名空间必须为App\Api

具体实现的接口类必须是PhalApi\Api的子类

定义接口方法,必须为public访问权限

接口参数,放置在getRules()函数方法中

Hello.php

<?php
namespace App\Api;use PhalApi\Api;/*** 第一个接口*/class Hello extends Api
{public function world(){return array('content' => 'Hello ');}
}


在其中可以进行基本参数查看 测试接口

<?phpnamespace App\Api;use PhalApi\Api;/*** 第一个接口*/class Hello extends Api
{public function getRules(){return array('world' => array('username' => array('name' => 'username', 'desc' => 'B站账号名称')));}public function world(){return array('content' => 'Hello ' . $this->username);}
}

请求参数输入一个用户名username 打印数组hello+输入用户名

username的备注是:B站账号名称

二、如何请求接口服务

1.Namespace表示命名空间前缀,Class为接口服务类名,Action为接口服务方法名

http://121.196.156.3:3001/?s=Hello.World == http://121.196.156.3:3001/?s=App.Hello.World

?s=Class.Action == ?s=Namespace.Class.Action

如果Api内有多级目录,则Class类名及目录之间使用下划线连接,并且类名中不能出现下划线

Namespace/Api/Folder/Class::Action() == ?s=Namespace.Folder_Class.Action

开启路由匹配

nginx加以下代码:

  # 开启URI路由匹配location / {try_files $uri $uri/ $uri/index.php;}if (!-e $request_filename) {rewrite ^/(.*)$ /index.php last;}

开启路由匹配以后即可将.代替成/

三、接口响应与在线调试

响应结构:data-ret-msg

ret字段是返回状态码,200表示成功;data字段是项目提供的业务数据,由接口开发人员定义;msg是异常情况下的错误提示信息

  • data:业务数据,推荐object类型,可以返回任意类型数据给客户端
  • ret:状态码,整型,200表示成功,4xx表示客户端非法请求,5xx表示服务器错误,其他数值可自定义(调试模式下可能是字符串类型)
  • msg:提示信息,字符串

四、简单查询例子

Model层

<?php
namespace App\Model;use PhalApi\Model\NotORMModel as NotORM;class User extends NotORM {public function getUserInfo($id) {return $this->getORM()->where('id', $id)->fetchOne();}
}

domain层

<?php
namespace App\Domain;use App\Model\User as UserModel;class User {public function getUserInfo($userId) {$model = new UserModel();return $model->getUserInfo($userId);}
}

api层

namespace App\Api;use PhalApi\Api;
use App\Domain\User as UserDoamin;
class User extends Api
{/*** 获取用户信息* @desc 根据用户id获取用户信息,作为演示*/public function getUserInfo(){$domain = new UserDoamin(); $info = $domain->getUserInfo(1);return array('info' => $info);}
}

可以获得返回信息

数据库连接如何指定表名

上面的App\Model\User类,自动匹配的表名为:user,加上配置前缀“tbl_”,完整的表名是:tbl_user。

默认表名的自动匹配规则是:取“\Model\”后面部分的字符全部转小写,并且在转化后会加上配置的表前缀。

phalapi 开发流程相关推荐

  1. 简述Web程序开发流程

    总体开发流程 分析需求, 列出功能清单或写需求说明书. 设计程序功能, 写功能规格书和技术规格书. 进入开发与测试的迭代. 调试和性能等专项测试. 部署上线 运维 前端开发流程 根据功能规格绘制页面草 ...

  2. 移动端开发者眼中的前端开发流程变迁与前后端分离

    写在最开始 这是一篇面向移动端开发者的科普性文章,从前端开发的最初流程开始,结合示范代码,讨论开发流程的演变过程,希望能覆盖一部分前端开发技术栈,从而对前端开发的相关概念形成初步的认识. 本文会提供一 ...

  3. node.js的开发流程_Node.js子流程:您需要了解的一切

    node.js的开发流程 by Samer Buna 通过Samer Buna Node.js子流程:您需要了解的一切 (Node.js Child Processes: Everything you ...

  4. 软件开发流程包含哪些内容

    2019独角兽企业重金招聘Python工程师标准>>> 能否开发出一个好的软件,关键是看软件开发前期所做的工作,重点是这个软件有没有一个好的 软件开发流程,因为一个好的软件开发流程关 ...

  5. TCP 网络应用程序开发流程

    TCP 网络应用程序开发流程 1. TCP 网络应用程序开发流程的介绍 TCP 网络应用程序开发分为: TCP 客户端程序开发 TCP 服务端程序开发 说明: 客户端程序是指运行在用户设备上的程序 , ...

  6. web开发流程 - 网上商城示例

    一.需求确定 1:通过各种手段确定系统的功能与性能    1)功能:注册.浏览.搜索...    2)性能:可同时支持n个并发访问,并且响应时间不低于m毫秒...    3)手段:头脑风暴(brain ...

  7. Leangoo阶段式硬件产品开发流程

    一.概述 本场景描述的是基于阶段式硬件研发流程以及在Leangoo中如何实现. 二.硬件产品开发流程 下图所示的是一个硬件产品开发大体上所需要经历的全部流程: 1)立项 在立项之前首先需要确定产品定位 ...

  8. 究竟什么样的开发流程是规范的?

    概述 有读者反馈,读了文章 一线技术管理者究竟在管什么事?收获满满,但还有点不过瘾,还想了解更细的东西... 这篇文章分享开发流程规范,目的是提高产品质量,优化开发流程,供大家参考. 规范是死的,人是 ...

  9. 敏捷开发流程的8个步骤

    一.敏捷开发流程的8个步骤包括: 1.目标制定,目标对齐:通过市场调研.业务思路.风险评估制定公司规划和目标,根据这一目标产生所有部门的目标并实现对齐: 2.产品规划:产品研发部门根据目标制定产品关键 ...

  10. 如何让Git适应敏捷开发流程?

    一旦涉及版本控制系统,Git实际上代表敏捷开发的水平.Git作为一款强大的开源系统,有较强的灵活性,可以按需匹配任何开发团队的工作流程.而这种分布式相比较集中式来说,自然赋予系统更好的性能特征,且允许 ...

最新文章

  1. Maven自动FTP远程部署
  2. python lambda ,map详解
  3. 如何使用React动态添加/删除class来改变样式
  4. Java数据结构类如何使用_Matlab如何使用Java的数据结构类型
  5. java 快排非递归_C++ 中快排的递归和非递归实现
  6. 【转:SAP学习篇】Fiori 的基本架构
  7. Shell之/bin/bash脚本的基础实战
  8. 下面使用计算机动画制作的,华师17年3月课程考试《计算机动画制作》作业考核试题...
  9. 007_Web to lead
  10. Linux 中mysql常用命令
  11. 【NOI2022】PV「什么是信息学精神?」
  12. 网络管理员考试案例梳理、真题透解与强化训练
  13. [linux]tcpdump抓包
  14. python 图形库有哪些_Python基本图形绘制库——turtle
  15. 获取华为云课程内嵌的课件pdf文件
  16. ϵ-greedy Policies
  17. 泊松过程1 | 定义与基本性质
  18. 上月和本月对比叫什么_统计学中与上个月比叫什么
  19. 如何录制自己手机视频
  20. [苹果解密]创新是伟大公司诞生的源泉--Apple再度成为美国最大上市公司

热门文章

  1. 梦幻西游手游服务器维护公告,《梦幻西游手游》10月5日维护公告 部分区服合并...
  2. Android判断首次安装
  3. 关于网络小说均订的那些事:有些已成历史,有些在不断打破纪录
  4. 学而思网校怎么查看回放 学而思网校查看回放教程
  5. ANSA二次开发实战——车身弯扭刚度计算文件自动生成(1)
  6. 解决讯飞语音唤醒参数无效(错误码:10106)的问题
  7. 计算机涨跌公式,计算机今日涨跌公式,怎么算 股票的涨跌停板 公式是怎么的?...
  8. JavaScript 实现简单的移动和缓动的效果
  9. 计算机表格中减法公式,excel表格减法公式
  10. 电子计算机按用途分类包括,计算机的分类试题解析