作者 zhl

生成静态界面

  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: zhl
  5 + * Date: 2024/2/19
  6 + * Time: 15:46
  7 + */
  8 +namespace App\Services;
  9 +
  10 +class CreateHtmlService
  11 +{
  12 + public function __construct(){}
  13 +
  14 + /**
  15 + * 返回最终需要的HTML
  16 + * @return string
  17 + */
  18 + public function getHtml($project, $route, $lang = [], $page = 0)
  19 + {
  20 + // 获取页面信息
  21 + $page_info = $this->getInfoByRoute($route);
  22 +
  23 + // 根据项目和路由信息返回的结果确定当前页面使用5.0还是6.0的页面;
  24 + if ($project && $page_info) {
  25 + $html = $this->getHtmlV6();
  26 + } else {
  27 + $html = $this->getHtmlV5();
  28 + }
  29 + return $html;
  30 + }
  31 +
  32 + /**
  33 + * 返回5.0页面最终HTML
  34 + * @return string
  35 + */
  36 + public function getHtmlV5()
  37 + {
  38 + $html = '';
  39 + return $html;
  40 + }
  41 +
  42 + /**
  43 + * 返回6.0页面最终HTML
  44 + * @return mixed
  45 + */
  46 + public function getHtmlV6()
  47 + {
  48 + // 初始化后续需要渲染页面需要的数据 路由、主语种、tdk、嵌入等信息
  49 +
  50 + $origin_html = $this->originHtml();
  51 + $html = $this->renderData($origin_html);
  52 + /** ... 调用其他方法, 直至返回完整的正确的HTML */
  53 + return $html;
  54 + }
  55 +
  56 + /**
  57 + * 根据路由信息 返回 路由属性及详细信息
  58 + * @param string $route
  59 + * @return array
  60 + */
  61 + public function getInfoByRoute($route)
  62 + {
  63 + // TODO 获取详情需要通过路由查下路由信息, 以及数据信息, 要处理特殊几个路由: top-search、products、news、blog, 这几个如果存在就用查下的信息, 如果不存在要初始化信息
  64 + return [];
  65 + }
  66 +
  67 + /**
  68 + * 获取可视化HTML
  69 + * @return string
  70 + */
  71 + public function originHtml()
  72 + {
  73 + $html = '根据路由查询数据库,并拼装HTML';
  74 + return $html;
  75 + }
  76 +
  77 + /**
  78 + * 补充其他信息
  79 + * TDK a链接 mate信息等
  80 + * @param string $html
  81 + * @return string
  82 + */
  83 + public function plugHead($html)
  84 + {
  85 + /** 渲染tdk信息、 mate信息、 嵌入信息、 图标信息*/
  86 + return $html;
  87 + }
  88 +
  89 + /**
  90 + * 处理最终信息
  91 + * 处理标签、最后代码标识、特殊规则或者字符等
  92 + * @param string $html
  93 + * @return string
  94 + */
  95 + public function processFinal($html)
  96 + {
  97 + return $html;
  98 + }
  99 +
  100 + /**
  101 + * 渲染页面数据
  102 + * @param string $html
  103 + * @return string
  104 + */
  105 + public function renderData($html)
  106 + {
  107 + /**
  108 + * 根据可视化HTML中关键词渲染数据
  109 + * 这个方法还需要进行拆分, 这个功能内容应该会比较多
  110 + * 并且还会根据路由信息和分页信息不同, 渲染不同数据, 只要针对列表页面
  111 + */
  112 + return $html;
  113 + }
  114 +}