docs.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. /**
  3. * PhalApi在线接口列表文档 - 自动生成
  4. *
  5. * - 对Api_系列的接口,进行罗列
  6. * - 按service进行字典排序
  7. * - 支持多级目录扫描
  8. *
  9. * <br>使用示例:<br>
  10. * ```
  11. * <?php
  12. * // 左侧菜单说明
  13. * class Demo extends Api {
  14. * /**
  15. * * 接口服务名称
  16. * * @desc 更多说明
  17. * * /
  18. * public function index() {
  19. * }
  20. * }
  21. * ```
  22. * @license http://www.phalapi.net/license GPL 协议
  23. * @link http://www.phalapi.net/
  24. * @author xiaoxunzhao 2015-10-25
  25. * @modify Aevit 2014-10-29
  26. * @modify shwy 2017-03-02
  27. * @modify dogstar 2017-06-17
  28. */
  29. use PhalApi\Helper\ApiStaticCreate;
  30. use PhalApi\Helper\ApiList;
  31. use PhalApi\Helper\ApiDesc;
  32. require_once dirname(__FILE__) . '/init.php';
  33. if (!empty($_GET['language'])) {
  34. \PhalApi\SL($_GET['language']);
  35. setcookie('language', $_GET['language'], time() + 86400 * 360, '/');
  36. }
  37. $projectName = '接口文档';
  38. $docViewCode = ''; // 查看文档密码,为空时不限制
  39. $detailTpl = API_ROOT . '/src/view/docs/api_desc_tpl.php';
  40. $listTpl = API_ROOT . '/src/view/docs/api_list_tpl.php';
  41. if (substr(PHP_SAPI, 0, 3) == 'cli') {
  42. // 生成离线文档
  43. $apiHtml = new ApiStaticCreate($projectName, 'fold', $detailTpl, ApiList::API_CATE_TYPE_API_CLASS_TITLE, ApiList::API_LIST_SORT_BY_API_TITLE);
  44. $apiHtml->render($listTpl);
  45. } else if (!empty($_GET['detail'])) {
  46. checkViewCode();
  47. // 接口详情页
  48. $apiDesc = new ApiDesc($projectName);
  49. $apiDesc->render($detailTpl);
  50. } else {
  51. checkViewCode();
  52. // 接口列表页
  53. $apiList = new ApiList(
  54. $projectName, // 项目名称
  55. ApiList::API_CATE_TYPE_API_CLASS_TITLE, // 菜单分组:按接口自定义名称
  56. ApiList::API_LIST_SORT_BY_API_TITLE // 接口排序:按接口自定义标题
  57. );
  58. $apiList->render($listTpl);
  59. }
  60. /**
  61. * 检测查看密码
  62. */
  63. function checkViewCode() {
  64. // 不设置查看密码,则不限制
  65. global $projectName, $docViewCode;
  66. if (empty($docViewCode)) {
  67. return;
  68. }
  69. $docViewCode = strval($docViewCode);
  70. session_start();
  71. $submitError = NULL;
  72. if (!empty($_POST['view_code'])) {
  73. if ($_POST['view_code'] == $docViewCode) {
  74. $_SESSION['doc_view_code'] = $docViewCode;
  75. } else {
  76. $submitError = \PhalApi\T('wrong view password');
  77. }
  78. }
  79. if (empty($_SESSION['doc_view_code']) || $_SESSION['doc_view_code'] != $docViewCode) {
  80. include API_ROOT . '/src/view/docs/check_view_code.php';
  81. die();
  82. }
  83. }