PESCMS 从2.0版开始使用了RESTful风格,URL地址更加简洁,控制器的功能布局更加直观。基于RESTful设计,可以让我们节省命名规则和快速定位出错的控制器位置。

GPPD

PESCMS在RESTful风格上,设计了4个状态:GET, POST, PUT, DELETE。简称:GPPD。

GET:用于读取数据,输出数据POST:用于插入数据PUT:用于更新数据DELETE:用于删除数据

  • 发表于 2018-05-14

如何使用

对于GPPD的使用,本章仅作简单的说明,具体请阅读后面关于《访问控制器》的一章

在没有任何声明的情况下,所有请求均为GET。需要访问GPPD可以通过两种形式:

  • 显式参数

显式参数则以GET参数的形式访问,其关键词为:method(不区分大小写)

  1. http://域名/signup GET请求
  2. http://域名/signup?method=POST POST请求
  • 隐式表单

隐式表单即在表单中存放一个隐藏域,再提交表单时,告知程序本次请求的类型

  1. <form action="signup" method="POST"> <!--此处method仅用作声明表单以POST还是GET的请求-->
  2. <input type="hidden" name="method" value="PUT" /> <!--将method作为一个隐藏域,并赋予该值为PUT,即表单提交时,声明为PUT请求-->
  3. </form>

注:在隐式提交时,若您的请求为GET/POST时,您可以直接不填写隐藏域。因为当程序判断$_REQUEST['method']为空时,会从$_SERVER['REQUEST_METHOD']中提起请求类型。

公式:$_REQUEST['method'] ? $_REQUEST['method'] : $_SERVER['REQUEST_METHOD']

  • 发表于 2018-05-14

设计风格

在日常的开发过程中,请遵照4个状态进行设置访问请求,以节省方法定位的时间和细化流程。下面列出PESCMS的开发命名规则(文档示例假定控制器存放于 /App/Home/ 目录下):

如获取产品列表/信息,编辑产品,搜索产品(发起GET状态),控制器访问地址则为: /Home/Product/index 、/Home/Product/action、 /Home/Product/listAction 或者 /Home/Product/searchAction. 具体实现代码如下:

文件 /App/Home/GET/Product.class.php

  1. <?php
  2. namespace App\Home\GET
  3. class Product extends \Core\Controller\Controller {
  4.  
  5. /**
  6. * index方法可以用于列表,或者其他信息
  7. */
  8. public function index(){
  9. /**
  10. * 具体列表的实现代码
  11. */
  12. }
  13.  
  14. /**
  15. * listAction方法可以用于列表,或者其他信息
  16. */
  17. public function listAction(){
  18. /**
  19. * 具体列表的实现代码
  20. */
  21. }
  22.  
  23. /**
  24. * action 通常用于 添加或者编辑
  25. */
  26. public function action(){
  27. /**
  28. * 具体添加/编辑的实现代码
  29. */
  30. }
  31.  
  32. /**
  33. * searchAction 通常用于搜索功能
  34. */
  35. public function searchAction(){
  36. /**
  37. * 具体添加/编辑的实现代码
  38. */
  39. }
  40.  
  41. }

文件 /App/Home/POST/Product.class.php

提交添加新产品请求(发起POST状态),控制器访问地址则为: /Home/Product/action。具体实现代码如下:

  1. <?php
  2. namespace App\Home\POST
  3. class Product extends \Core\Controller\Controller {
  4.  
  5. /**
  6. * action 添加新产品信息
  7. */
  8. public function action(){
  9. /**
  10. * 具体添加/编辑的实现代码
  11. */
  12. }
  13.  
  14. }

文件 /App/Home/PUT/Product.class.php

提交更新产品的请求(发起PUT状态),控制器访问地址则为: /Home/Product/action。具体实现代码如下:

  1. <?php
  2. namespace App\Home\PUT
  3. class Product extends \Core\Controller\Controller {
  4.  
  5. /**
  6. * action 更新指定产品信息
  7. */
  8. public function action(){
  9. /**
  10. * 具体添加/编辑的实现代码
  11. */
  12. }
  13.  
  14. }

文件 /App/Home/DELETE/Product.class.php

提交删除产品的请求(发起DELETE状态),控制器访问地址则为:/Home/Product/action。具体实现代码如下:

  1. <?php
  2. namespace App\Home\DELETE
  3. class Product extends \Core\Controller\Controller {
  4.  
  5. /**
  6. * action 删除指定产品
  7. */
  8. public function action(){
  9. /**
  10. * 具体添加/编辑的实现代码
  11. */
  12. }
  13.  
  14. }