MyStep Frameworkweb 开发框架

联合创作 · 2023-09-20 02:33

迈思框架(MyStep Framework)是一套基于 [PHP 7.0] 的web开发框架,旨在构建一个可以便捷调用常用功能,以最简洁的代码实现目标功能,同时具备高度可扩展性,可通过代理模式,方便的将第三方功能模块集成到框架中。

  • 路由系统 - 框架通过 rewrite 方法接管所有响应,除 static 目录和自定义扩展类型外,其他文件均无法直接通过 url 访问,兼具高可控性和安全性。 (IIS对应web.config,Apache对应.htaccess,NginX需参考目录下文件手动添加)。
  • 路由模式 - 为增加环境适应度,框架同时支持Rewrite,QueryString和PathInfo三种模式,页面中站内URL只需要按照rewrite的模式书写(相对于框架目录,首位无需加"/"),框架将自动调整为对应模式,但为保证最大兼容性,php脚本内的链接多以QueryString模式处理。
  • 模版系统 - 采用二次编译模式,严格实现模板与程序的分离,通过通俗的标签模式调用各类数据。基本模板格式简单易学,方便制作,只要对HTML有一定了解的设计师均可以很快上手,模板修改后即时生效。同时具备高度可扩展性,可根据实际需要任意扩充模版标签。
  • 插件系统 - 可插件模式扩展框架功能,无论是功能增强、系统优化、前台展示均可与系统无缝连接。内容评分、评论、投票、专题、检索、采集、统计等都可以通过插件实现,并可以无缝结合到系统中。
  • 应用接口 - 系统为各类插件提供了丰富的接口,无论是api、模板标签、代码嵌入、脚本附加、登录处理,都可以通过系统接口便捷地实现,为二次开发或插件开发提供最大限度的支持和自由。
  • 多语言支持 - 系统可以随意添加语言包,通过调整参数立即变化。
  • 缓存机制 - 通过三级缓存保证高效
    • 数据缓存,用于缓存从数据库查询出的结果集,包含自建文件和数据库两种模式,也可通过代理模式扩展;
    • 页面缓存,可将解析好的页面整体缓存到缓存文件,在过期前不用再次生成页面,即实现了静态化的效果,也保留了动态脚本的特性;
    • 浏览器缓存,通过etag标识,在客户端再次请求页面数据时,如页面未发生变化,则直接从客户端缓存调用数据,减少了对服务器带宽的请求。

公共函数:

  • getMicrotime($rate) - 获取微秒时间
  • getTimeDiff($time_start, $decimal, $micro) - 取得时间差
  • getDate_cn($date) - 获取中文日期
  • shortUrl($url, $max_length) - 缩略链接
  • tinyUrl($url) - 获取短网址
  • isMobile() - 判断是否为移动设备
  • isHttps() - 判断当前是否为SSL链接
  • myEval($code) - 自定义代码执行
  • checkPara($att_list, $parse) - 检测数据变量中是否有待解析的变量,并解析
  • recursionFunction($func, $para) - 递归执行某一函数
  • getOB() - 获取缓存区内容并清空
  • debug系列函数 - 变量情况查看

执行顺序:

所有响应网址均通过rewrite模块反馈给根目录下的index.php脚本统一处理,虽然框架也支持QueryString和PathInfo两种模式,但是为了更好的网址优化和安全性,建议采用rewrite的方式,主要执行流程如下:

  • 初始化框架 - 通过框架根目录index.php,调用myStep::init()
  • 路由模式判断 - 通过 $router->check() 判断是否存在自定义路由
    • 当前响应路径符合已设定的自定义路由规则,按规则调用指定的响应方法,可由多方法依次执行构成多级响应。可通过框架默认处理方法myStep::getModule()调用相应模块(具体处理流程详见核心类对应方法讲解),也可以根据需要替换为自定义方法。
    • 如未发现何时规则,则分析响应路径,将一级路径或默认app指定为响应app,并调用该app路径下的index.php处理
  • 框架变量设置 - 在获取执行入口之后,框架将继续调用以下程序
    • myStep::setPara() - 此方法在执行入口脚本之前将调用,用于加载应用设置(config.php)、应用函数库(lib.php),并设置基本框架变量
    • $mystep->preload() - 并非myStep类中的原生方法,但是如果应用扩展类中存在此方法,将会在声明类后立即执行
    • lib.php - 应用函数库(app/[name]/lib.php,推荐使用命名空间),在核心类已加载并声明实例后加载
    • global.php - 本脚本为应用通用脚本,自定义路由模式下通过 myStep::getModule() 自动加载,其他模式下需手动加载,可用于在模版实例声明后做后期变量及程序调整。
    • $mystep->shutdown() - 并非myStep类中的原生方法,但是如果应用扩展类中存在此方法,将在页面结束时执行

PHP常量:

  • PATH - 当前应用路径
  • ROOT - 框架根目录路径
  • ROOT_WEB - 框架相对于网站根目录的相对路径
  • APP - 应用存放路径
  • LIB - 函数及类存放路径
  • CACHE - 缓存及临时文件存放路径
  • CONFIG - 配置文件存放路径
  • PLUGIN - 插件存放路径
  • STATICS - CSS、JS及图片等静态文件存放路径
  • VENDOR - 第三方应用库存放路径
  • FILE - 文件上传目录

全局变量:

  • $s - 框架配置,通过对象模式调用,如$s->web-title
  • $info_app - 当前调用应用的基本信息,除对应APP信息外(APP目录下info.php定义),还包括path(数组)和route(字符串)项目
  • $mystep - 应用入口类,如应用路径下不存在以应用路径名命名的类(如test/test.class.php里面的test类,且此类应该是mystep类的扩展),则调用默认mystep类
  • $db - 数据库操作类,在函数初始化时根据设置连接,采用代理模式,可扩展
  • $cache - 数据缓存类,在函数初始化时根据设置连接,采用代理模式,可扩展
  • $tpl_setting - 模版参数,从 app 设置中调用,并继承于全局变量
  • $tpl_cache - 模版缓存参数,从 app 设置中调用,并继承于全局变量

基础类:

myBase为抽象类,可为所有其他子类提供统一的构建方法和错误处理;myTrait为扩展类,可为所调用的类提供一整套魔术方法

  • myBase->__construct - 将构造函数引导至init方法
  • myBase->setErrHandler - 设置错误处理函数
  • myBase->error - 通过异常处理类处理代码错误
  • myTrait->__set - 添加类动态变量,即没有在类中声明过的变量
  • myTrait->__get - 调用类动态变量,如变量名为instatnce,则直接返回新的当前类实例
  • myTrait->__destruct - unset类时,注销所有类内部变量
  • myTrait->__call - 智能判断并调用方法别名,动态方法或类外部函数
  • myTrait->addMethod - 动态添加类方法
  • myTrait->regAlias - 注册类内方法别名

控制类:

myController类为核心控制类,具体用法请参加功能类文档,其中几个重要方法说明如下:

  • 页面附加内容设置 - 包括 setAddedContent 和 pushAddedContent 两个方法,可设置指定关键字的内容,并将相关内容插入到模版中"page_关键字"的位置
  • 语言文件管理 - 包括 setLanguage,setLanguagePack 和 getLanguage 三个方法,可设置语言、语言包或调用指定语言、指定索引的文字
  • 应用接口设置 - 包括 regApi 和 runApi 两个方法,可通过路由的 /api/[str]/[any] 调用
  • 模块设置 - 包括 regModule 和 module 两个方法,可通过路由的 /module/[str]/[any] 调用
  • 模版标签设置 - 包括 regTag 一个方法,将在调用show方法时加载给模版类
  • 链接设置 - 包括 regUrl 和 url 两个方法,通过指定方法和相关参数生成对应链接
  • 插件设置 - 包括 regPlugin 和 plugin 两个方法,每个插件是应用接口,模块,标签和链接的组合
  • 代码钩子设置 - 包括 setFunction 和 run 两个方法,将在指定的位置(start,end,page等,也可自定义)依次(顺序或倒序)执行指定的方法
  • 用户账户管理 - 包括 regLog,login,logout 和 chg_psw 四个方法,用于与第三方用户系统对接
  • 脚本管理 - 包括 addCSS,removeCSS,clearCSS,CSS,addJS,removeJS,clearJS 和 JS 八个方法,用于动态加载js和css脚本
  • 页面控制 - 包括 start,show 和 end 三个方法,用于页面起始、显示和结束
  • etag方法 - 用于赋予或调用指定标识的浏览器缓存
  • file方法 - 直接显示指定文件
  • guid方法 - 生成唯一ID
  • setOp方法 - OPcache设置与调用
  • regClass方法 - 设置类自动载入规则
  • setAlias方法 - 设置类调用别名
  • header方法 - 返回指定的响应头(可以编码或指定的索引,具体参见源代码)

核心类:

myStep类扩展自myController类,具体用法请参加功能类文档,其中几个重要方法说明如下:

  • start($set_plugin) - 执行于脚本主程序开始之前,用于设置框架类及其方法的调用别名,设定错误报告模式,加载应用对应插件,初始化cookie和session,声明数据库($db, 如$s->db->auto为false,则不建立连接,以便于无数据库操作的应用)和缓存($cache)实例,以及为状态变量赋值
  • show(myTemplate $tpl) - 用于加载网站基本参数至模版实例,并将结果直接显示(在此可添加针对显示内容的预处理方法);同时也检测并按需更新应用脚本文件([appName].js 和 [appName].css,详情见相关专题),如设置"$mystep->setting->show = true",则将在页面最下面显示基本运行信息。
  • render(myTemplate $tpl) - 与 show 方法类似,但是返回通过模版实例所生成的页面内容,而不是直接显示
  • setLink($content) - 针对所生成页面的链接,根据设定的链接模式(rewrite,pathinfo或querystring)进行处理,页面模版中只要按照rewrite模式书写,在页面显示时将自动通过本预处理方法调整为对应设置的链接。
  • end() - 脚本结束时所用的方法,搜集并对比运行结束时的信息,结束并清空变量,并智能调用用户扩展类中自定义的 shutdown() 方法
  • info($msg, $url) - 执行结果或提示信息显示,并在5秒后自动跳转到对应的链接
  • redirect($url, $code) - 脚本内链接跳转,如$url为空则退回来路链接;$code默认是302临时跳转,可根据需要改变。
  • init() - 静态方法,预初始化基本设置信息(如发现有错误将自动调整),声明类加载模式,如为首次执行框架的话,将自动跳转到初始设置页面
  • go() - 框架执行入口,加载设置信息,判断静态文件并直接显示,否则根据路由规则调用相关脚本
  • setPara() - 声明框架实例,默认直接调用myStep类,也可在对应APP中扩展,框架会自动调用APP目录下"[appName].class.php"中与APP同名的类。将APP配置覆盖全局配置,然后再调用start方法,同时声明预加载的css和js脚本文件以及模版的初始设置。
  • vendor($class_info) - 调用位于VENDOR目录下的第三方PHP功能类,需要满足以下条件。
    • 如$class_info为字符串,所调用类(位于vendor目录下)的目录名、文件名和类名必须一致,其中文件名可为"名称.php"或"名称.class.php"
    • $class_info可以为数组,包含
      • dir - 目录名称,如不设置默认与 file 值相同
      • file - 不带扩展名的文件名称,扩展名可为".php"或".class.php",如不设置默认与 dir 值相同
      • class - 调用类名称,如不设置默认与 file 值相同
      • namespace - 类的命名空间,没有请留空
    • 方法中除了首参数($class_info)外,后面的参数将用于在声明类时,构造函数(__construct()或init())的初始化
  • getModule($m) - 自定义路由处理函数(也可以通过自定义方法处理自定义路由,详情参见"自定义路由"专题),机制如下:
    • 传入参数 $m - 本参数传递路由外的路径信息,如路由为 /manager/[any],URI 为 /manager/path1/path2,则 $m 为 path1/path2,即[any]部分,但需要注意的是在本方法中,$m 被截取为 path1。此参数可直接在自定义的路由处理脚本内调用,但如需在下级函数中调用,需要先进行global处理。
    • 本方法将通过 myStep::setPara 方法调用当前 app 设置中的模版参数设置(可继承于全局设置,存储于全局变量 $tpl_setting 中)
    • 本方法将按照如下顺序调用处理脚本(发现可用脚本后将立即调用并停止试探)
      • app路径/module/模版样式/$m.php($m 为输入参数)
      • app路径/module/模版样式/路由名称.php (如路由为 /manager/[any],路由名称为 manager)
      • app路径/module/$m.php($m 为输入参数)
      • app路径/module/路由名称.php (如路由为 /manager/[any],路由名称为 manager)
      • app路径/module/模版样式/index.php(模版样式为设置中对应的内容)
      • app路径/module/index.php

JS变量:

相关变量是通过脚本在页面被调取时动态生成,在调用时建议在onload事件或jQuery的$(function(){})中调用

  • language - 调用系统语言设置(可自动扩展app语言包)
  • setting - 调用系统设置(包括:language,router,debug,app,path_root,path_app,url_fix,url_prefix,url_prefix_app等信息,可通过APP设置重的 $setting['js'] 扩充)
  • global - 全局变量,可在任何函数内部调用,可随意扩种,已包含以下子参数:
    • global.root - 针对rewrite、pathinfo和querystring模式下的根路径
    • global.root_fix - 配合setURL,用于页面链接的自适应调整
    • global.editor_btn - 针对tinyMCE编辑器的按钮扩展
    • global.alert_leave - 在含表单的页面,如果内容发生变更,且通过非提交方式离开页面的话,将此变量设置为 true,即可出现警告
    • global.timer - 用于计时器的返回值记录(非强占,可灵活调用)
    • global.func - 页面载入后所需运行的函数组

JS函数:

  • getPath(lvl) - 获取相对于网站根的到调用函数页面所在路径的lvl级路径
  • $id(id) - 获取对应id的页面元素
  • $name(name, idx) - 获取对应name的页面元素(组),idx可为first,last,数字索引,否则返回全部符合的元素组
  • $tag(name, context) - 依照context(默认为document)获取对应tag的页面元素组
  • isArray(para) - 判断变量是否为数组
  • loadingShow(info) - 显示锁屏信息,再次调用则关闭
  • openDialog(url, width, height, mode) - 开启模态窗口
  • openWindow(url,width,height) - 新开窗口
  • sleep(the_time) - 程序终端指定时间
  • copy(obj) - 复制某一页面元素内容(value或innerText)或者一个字符串
  • rndNum(min,max) - 生成指定范围内的随机数字
  • rndStr(len, t_lst, c_lst) - 生成随机字符串(可自定义采样内容)
  • watermark(obj, rate, copyright, char_c, jam_tag) - 添加字符串水印
  • md5(str) - 生成str的md5编码
  • debug(para, mode) - 检测指定变量para的内容
  • checkObj(obj, func_show) - 查看对象属性
  • reportError(msg, url, line) - 错误信息处理
  • checkSetting() - 通过在需要调用检language, setting变量的函数开始加上"if(!checkSetting()) return;"(参考global.js中setURL函数的用法)来保证对应函数执行时可调用系统变量
  • setURL(prefix) - 配合域名绑定模式和路由模式,智能处理页面内链接
  • gotoAnchor(theAnchor) - 滚动至对应的锚点
  • ms_func_reg(function) - 注册需要页面载入后运行的函数
  • ms_func_run() - 运行于所有页面载入之后的函数(框架自动在page_end处运行)
  • 对象方法扩展 - 针对 String,Data,Number,Array 等对象
    • string.blen - 返回某字符串的二进制长度
    • string.trim - 去除字符串首尾空字符
    • string.printf - 字符串赋值
    • data.format - 格式化日期(YYYY-MM-dd hh🇲🇲ss)
    • array.append - 扩展数组
    • number.formatMoney - 格式化金额
  • jQuery扩展 - 包括功能扩展($.xxxx)和对象方法扩展($obj.xxx)两类
    • $.toJSON - 将指定对象转换为json
    • $.evalJSON - 将json字符串转换为对象或数组
    • $.setJs - 批量顺序加载js脚本
    • $.setCss - 批量加载css样式表
    • $.vendor(name, option) - 加载vender目录下名称为name的第三方js扩展,可根据option判断是否同时加载样式表并调用回调函数,相关说明如下:
      • 目录名和js文件名须一致
      • option 中 add_css 设置为 true 时,将同时加载同名css文件,如设定为字符串,将作为css的文件名修正,如".min"将加载"名称.min.css"
      • option 中 name_fix 为文件名修正,如设定为".min",将加载"名称.min.js"文件
      • option 中 callback 参数为匿名函数,用于在成功调用扩展后,执行相关的功能代码
    • $.cookie(name, value, options) - cookie管理(读取、添加、修改、删除)
    • $obj.serializeObject - 将jQuery对象序列化(如form)
    • $obj.outerHTML - 返回jQuery对象的外部超文本代码
    • $obj.cssText - 为jQuery对象批量添加CSS

路由规则:

路由分为路径调用和自定义路由两种

  • 命名规则 - 为避免路由冲突,路径调用模式下"应用目录名"首字母"建议"为大写;自定义路由模式下,一级路径首字母"必须"为小写字母
  • 路径调用 - 相关路径信息将直接传递给应用目录下的index.php处理,格式为:网址/应用目录名/路径信息
  • 自定义路由 - 可在框架的应用设置中载入应用路由配置,格式如下:
    • $format - 路径辨别格式,含如下默认格式:
      • [any] - 任意非路径字符
      • [str] - 字母、数字及下划线
      • [int] - 任意数字
      • 自定义格式为 array(格式索引 => 格式正则),示例如下:
         $format = array(
            'test' => '([A-Z][a-z]+)+',
         );
    • $rule - 路由规则,格式为 array(请求路径, 处理接口)
      • "请求路径"中可包含预定义路径(格式为[格式索引]),每个路径间隔符中,仅能包含一个自定义格式且不能有其他字符;
      • "处理接口"为负责相应该路径的函数,如果为数组的话,则会依次执行,除最后一个外,如某个子判断返回false则终止执行,否则上一个函数的返回值将作为下一个函数最后一个参数;各处理函数如需加带参数,可依照"函数名,参数值"的格式,其中参数值可以指定固定值,也可以通过"$1","$2"的模式指定为对应的路径匹配部分(下例2中$1匹配[test]部分);如处理函数为静态类方法,调用格式为"类名:方法名";处理函数也可为闭包函数,如:
        $rule = array(
           array('/test/[test]', array('perCheck,3','routeTest'))
        );
        $rule = array(
           array('/test/[test]', array('perCheck,$1','routeTest'))
        );
    • $api - 应用接口程序,格式如下:
      $api = array(
          'error' => 'app\myStep\getError'
      );

框架接口:

以下接口为框架通过路由规则预定义的接口,接口处理函数统一返回数组格式数据,可通过在url最后加上"/返回类型"来控制(可选),格式默认为json,还可为xml、string、hex、script等,如需在某一APP内调用另外一个APP的插件接口(如captcha),可通过在url上加上"&app=[AppName]"的模式保重接口依照对应app的设置执行。

  • /api/[str]/[any] - 自定义应用接口,[str]为app名称,[any]为接口名及参数,可通过_GET或_POST接收参数
  • /module/[str]/[any] - 模块接口,[str]为app名称,[any]为模块名及参数
  • /captcha/[any] - 验证码图像接口,[any]为随机数,保证新码生成,验证参数为$_SESSION['captcha']
  • /ms_setting/[any] - 设置接口,[any]为应用名称,获取该应用json格式的设置
  • /ms_language/[str]/[any] - 设置接口,[str]为应用名称,[any]为语种索引,获取该应用json格式的设置
  • /api/myStep/upload - 文件上传接口,上传文件保存在常量FILE目录
  • /api/myStep/download/[any] - 文件下载接口,[any]为文件索引
  • /api/myStep/remove/[any] - 上传文件删除接口,[any]为文件索引

应用结构:

应用是在框架基础上的独立功能组合,相关文件存放在框架APP目录对应应用名称(应用名称首字母需要大写)的目录下,推荐结构如下:

  • config - 配置文件描述,分语种,用于生成配置设置页面,模式可参考框架config目录,格式参照static/js/checkForm.js规范输入格式
  • language - 语言包文件,可通过框架自动调用
  • module - 针对不同请求的功能模块,默认处理脚本为 index.php
  • template - 模版文件
  • asset - 资源文件,此目录下的文件可以直接通过"/[appName]/asset/[fileName]"的方式调用存放于"模版样式名子目录"下的文件,框架可自行根据设置调用,如设置了域名绑定,可进一步简化为"/asset/[fileName]"。例如:应用名为MyApp,模版类型为default,文件存储在 app/MyApp/asset/default/myfile.txt,调用网址为:http://hostname/MyApp/asset/myfile.txt
  • asset/style.css - 应用样式表文件(自动载入)
  • asset/function.js - 应用脚本文件(自动载入)
  • config.php - 配置信息(参考config目录下的描述文件)
  • index.php - 入口文件(必需)
  • info.php - 介绍文件(必需)
  • lib.php - 应用通用函数库,自动加载,在myStep::setPara()前引入
  • global.php - 应用通用脚本,自定义路由模式下通过myStep::getModule()自动加载,用于在模版实例声明后做后期调整,其他模式下需手动加载
  • plugin.php - 插件引用记录(自动生成)
  • route.php - 路由信息,格式详见路由章节

脚本加载:

每个应用可通过myStep::setPara()自动生成 cache/script/[appName].js 和 cache/script/[appName].css([appName]表示应用名称),供页面调用,这两个文件经压缩处理,可根据相关文件内容改变自动更新。载入规则如下(如文件不存在将自动忽略,其中[TemplateStyle]为模版样式名称):

  • cache/script/[appName].css - 将自动载入以下文件(其中部分static目录下的文件可在设置中调整):
    • static/css/bootstrap.css
    • static/css/font-awesome.css
    • static/css/glyphicons.css
    • static/css/global.css
    • [appName]/asset/style.css
    • [appName]/asset/[TemplateStyle]/style.css
  • cache/script/[appName].js - 将自动载入以下文件(其中前四个文件可在设置中调整):
    • static/js/jquery.js
    • static/js/jquery.addon.js
    • static/js/bootstrap.bundle.js
    • static/js/global.js
    • [appName]/asset/function.js
    • [appName]/asset/[TemplateStyle]/function.js

功能插件:

插件为为应用添加某一组功能,可通过框架后台插件管理设置参数,并在应用管理的插件选项中设置对应应用都调用那些插件,推荐结构如下:

  • index.php - 入口脚本,插件调用时将首先调用此文件(必需)
  • info.php - 介绍文件(必需)
  • class.php - 包含检测(check)、安装(install)、卸载(uninstall)以及其他基本功能(如模版标签解析,页面钩子等)的脚本(必需)
  • config.php - 配置信息(参考config目录下的描述文件)
  • module - 存放功能模块所需文件(脚本及模版),模块可以理解为针对插件功能的客户交互页面

框架钩子

包含程序钩子和框架钩子两类

  • 程序钩子 - 主控制类中包括 setFunction 和 run 两个方法,将在指定的位置(start,end,page等,也可自定义)依次(顺序或倒序)执行指定的方法
    • setFunction($func, $position) 用于注册某个方法($func),并指定在某个位置($position)响应
    • run($position, $desc, $para) 在特定位置($position)执行已注册的所有方法,如果$desc为false的话,则按照注册顺序的反序执行,$para为对应方法的参数,需要为数组模式(即使参数本身即为数组,也需要将其作为数组的首变量,即[$para]),如未设置,则会将当前类作为作为参数传递给对应方法
  • 模版钩子 - 模版类中包括 setAddedContent 和 pushAddedContent 两个方法
    • setAddedContent($position, $content) 用于在指定位置($position)注册所需添加的内容,其中对应位置将被
    • pushAddedContent(myTemplate $tpl) 将已注册内容加入对应模版变量的"page_{$position}"的位置,如 $mystep->setAddedContent('somewhere', 'content1')、 $mystep->setAddedContent('somewhere', 'content2') ,对应模版中<!-page_somewhere->将被替换为'content1content2'

链接设定

由于框架支持Rewrite,QueryString和PathInfo三种模式,在页面链接的设定方面可根据,按照如下两种方式:

  • PHP脚本模式 - 链接直接按照路由对应规则(即rewrite模式)设置,通过myStep类中的静态方法 setURL 转换待转换链接即可,但是每次执行仅能转换一个链接
  • JS脚本模式 - 链接直接按照路由对应规则(即rewrite模式)设置,在页面载入最后执行JS函数 setURL() (setURL函数的规则详见JS函数章节),即可智能转换页面所有链接
  • 其他说明 - 在实际应用中需参考以下情况:
    • 在转换链接的同时,也会给链接加上路径信息,如:
      框架存放在 /dir/ 目录下,设置模式为PathInfo,路由链接为 /func/method/id,经过转换后的链接为:/dir/index.php/func/method/id
    • 模版函数也将传递一个路径变量:,,参照上例,此变量内容为:/dir/index.php/,如所调用文件为静态文件可直接在利用即可。

域名绑定:

每个应用或路由规则(仅限一级目录)均可以通过框架绑定到独立域名,但需要避免路由中与其他路由规则混淆(如:setting关键字默认为调用对应应用的设置信息),具体解决方法请见myStep应用

Composer:

框架支持通过composer添加附属功能及相关依赖,具体请参见composer文档

浏览 5
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报