×

MyStep framework web开发框架

消耗积分:2 | 格式:zip | 大小:22.65 MB | 2022-06-29

33391

分享资料个

授权协议 Apache
开发语言 PHP JavaScript HTML/CSS
操作系统 跨平台
软件类型 开源软件
所属分类 Web应用开发Web框架

软件简介

迈思框架(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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !