# ShipLang.com多语言框架,网页后端开发规范 v2.0 ## 一、核心原则(必须遵守) 1. UTF-8编码 这套架构是为了减少ai工作量并提升对Ai作品的可维护性而设计 用户不懂数据库原理,所以设计数据库部分的时候,直接把创建数据库的代码放在代码里,判断数据库或表不存在就创建或首次访问就创建 ## 目录结构 ├── assets/ # 资源文件夹(图片、CSS、JS等静态资源) ├── h5_html/ # HTML网页文件,但html文件结尾是[.php],例如aaa.php但实际上里面是html ├── h5_php/ # HTML对应的PHP后端Api处理文件 ├── lang/ # 语言包文件夹(自动翻译自动创建多语言文件) ├── shiplang/ # 这是框架的代码,请忽略 ├── sitemap/ # 网站地图文件夹 └── index.php # 网站入口文件,也是网站路由文件 ## 基础配置 在表述完蓝图之后你还需要告知用户记得配置 数据库的账号密码设置路径:[shiplang]->db.php ## 路由规则 a.us/b/c 前端,会被路由到[h5_html]->[b]->c.php 后端,会被路由到[h5_php] ->[b]->c.php->index方法。假设任意一项不存在,则被路由到通用后端渲染代码:[shiplang]->allhtml.php->index方法 本质上是由index方法,最终渲染出前端文件 a.us/b/api_c 则不会被路由到前端[h5_html]目录,而是被路由到:[h5_php] ->b.php->api_c方法名。因为在该系统中区分是页面还是接口是使用【api_】 下方是后端路由时,自动提取预制到Db::input参数 qx_lang //语言列表 qx_route_path //路由参数 qx_current_url //当前网址 qx_execute_code //执行代码 qx_page_filename //文件尾名 qx_route_filename //路由文件 qx_current_language //当前语言 qx_route_slash_count //无语言路斜杠数 qx_route_without_lang //无语言路由 你需要确保这些预制参数和网站本体参数不发送冲突或者重叠,路由文件存在上方对应的这些参数的调试信息默认被注解,手动解除即可显示 ## 代码规范示例 'dev_id未注册']); include $_SERVER['DOCUMENT_ROOT'] . '/h5_html/web/login_dev_no.php';//获取特定html路径,并渲染到缓存 $html = ob_get_clean(); echo $la->Lang_Html($html,$qx_current_language,$qx_route_path,$qx_lang,$qx_route_without_lang); exit; } $data = Db::query("select * from `data` where dev_id = ?", [$dev_id]); $la = new lang(); ob_start(); extract(['data'=>$data]); $lu = str_replace("h5_php","h5_html", __FILE__);//获取对应关系目录文件,用户输入1.com/a则会被牵引到h5_php/a.php,a.php会牵引到h5_html/a.php该文件直接展示页面给用户 include $lu;//获取html路径,并渲染到缓存 $html = ob_get_clean(); echo $la->Lang_Html($html,$qx_current_language,$qx_route_path,$qx_lang,$qx_route_without_lang); } public function api_test() {//后端api方法名开头必须是【api_】 $id = Db::input('id','');//可读取Post和Get参数 if (empty($id)) { Db::return_json(['code' => 400,'msg' => '请输入id']); } Db::execute("INSERT INTO aaa (id,bbb) VALUES (?,?)",[$id,'bbb']);//增 Db::execute("DELETE FROM aaa WHERE id = ?", [$id]);//删 Db::execute("UPDATE aaa SET bbb = ? WHERE id = ?",['new_bbb',$id]);//改 $data = Db::query("SELECT * FROM aaa WHERE id = ?", [$id]);//查 使用query Db::return_json(['code' => 200,'msg' => '查询结果','data' => [ 'data' => $data ]]); //后端Api翻译代码示例: //Db::return_json($data);//不翻译 //Db::return_json($data, ['data.p.*', 'msg']);// p 下全翻译 + msg 字段翻译 //Db::return_json($data, ['data.p.b.n', 'data.p.pro.*']);// 只翻译 b 的 n + pro 下所有内容 } } ?>