作者 lyh

Merge branch 'zhl' of http://47.244.231.31:8099/zhl/globalso-v6 into develop

  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($page_info['master_lang'], $lang = [], $page = 0);
  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($master_lang, $lang = [], $page = 0)
  47 + {
  48 + // 初始化后续需要渲染页面需要的数据 路由、主语种、tdk、嵌入等信息
  49 +
  50 + $origin_html = $this->originHtml();
  51 + $html = $this->renderData($origin_html, $page);
  52 + $html = $this->plugHead($html);
  53 + $html = $this->processFinal($html);
  54 + /** ... 调用其他方法, 直至返回完整的正确的HTML */
  55 + return $html;
  56 + }
  57 +
  58 + /**
  59 + * 根据路由信息 返回 路由属性及详细信息
  60 + * @param string $route
  61 + * @return array
  62 + */
  63 + public function getInfoByRoute($route)
  64 + {
  65 + // TODO 获取详情需要通过路由查下路由信息, 以及数据信息, 要处理特殊几个路由: top-search、products、news、blog, 这几个如果存在就用查下的信息, 如果不存在要初始化信息
  66 + return [];
  67 + }
  68 +
  69 + /**
  70 + * 获取可视化HTML
  71 + * @return string
  72 + */
  73 + public function originHtml()
  74 + {
  75 + $html = '根据路由查询数据库,并拼装HTML';
  76 + return $html;
  77 + }
  78 +
  79 + /**
  80 + * 补充其他信息
  81 + * TDK mate信息等
  82 + * @param $html
  83 + * @return mixed
  84 + */
  85 + public function plugHead($html)
  86 + {
  87 + /** 渲染tdk信息、 mate信息、 嵌入信息、 图标信息*/
  88 + return $html;
  89 + }
  90 +
  91 + /**
  92 + * 处理最终信息
  93 + * 处理标签、最后代码标识、特殊规则或者字符等
  94 + * @param string $html
  95 + * @return string
  96 + */
  97 + public function processFinal($html)
  98 + {
  99 + return $html;
  100 + }
  101 +
  102 + /**
  103 + * 渲染页面数据
  104 + * @param string $html
  105 + * @return string
  106 + */
  107 + public function renderData($html, $page)
  108 + {
  109 + /**
  110 + * 根据可视化HTML中关键词渲染数据
  111 + * 这个方法还需要进行拆分, 这个功能内容应该会比较多
  112 + * 并且还会根据路由信息和分页信息不同, 渲染不同数据, 只要针对列表页面
  113 + */
  114 + return $html;
  115 + }
  116 +}