天下无坑

天下无坑


框架主要流程

<pre><code class="language-plantuml">@startuml 'title z-php 框架主流程 !includeurl https://raw.githubusercontent.com/xuanye/plantuml-style-c4/master/core.puml GREEN_ARROW skinparam BackgroundColor #FCFCFC start :/public/APP_NAME.php 入口文件; partition **/core/v0.1/core.php** { :定义常量; note right IN: 入口文件路径 APP_NAME: APP名 VERSION: 框架版本号 TIME: 服务器时间戳 IS_AJAX: 是AJAX请求? IS_WX: 是微信客户端? METHOD: 请求模式POST/GET CORE: 框架路径 ROOT: 项目根路径 TMP: 临时文件路径 LOG: 日志文件路径(TMP内) RUN: 运行文件路径(TMP内) CACHE: 缓存文件路径(TMP内) APP_PATH: APP的MVC文件路径 COMMON: 公用文件路径(所有APP公用) PUB: 公开访问路径(入口文件所在文件夹路径) VER: 项目版本号 APP: APP当前版本的MVC路径 RES: APP当前版本的前端静态资源路径 APP_RUN: APP当前版本的运行文件路径 APP_CACHE: APP当前版本的缓存文件路径 PHP_FILE: 入口文件名 ____ROOT____: APP当前版本的公开访问URI(用于模板) ____TMP____: APP当前版本的临时文件URI(用于模板) ____RES____: APP当前版本的前端静态资源URI(用于模板) endnote :定义全局函数; note right zautoload() 懒加载callback debug() 开启/关闭调试(F12控制台) is_fullpath() 是否完整路径 a2r() 路径格式化为根URI(不带域名) r2a() 路径格式化为绝对路径 P() 输出调试信息 ID() 从get或post获取id类参数并格式化 file_size_format() 带单位的文件尺寸 transcode() 转为UTF-8编码 getip() 获取IP del_dir() 删除目录 endnote :引入公用级全局函数 COMMON . 'functions.php'; :引入APP级全局函数 APP_PATH . 'functions.php'; :引入核心类 \core\v0.1\z\z.class.php; note right z::start() 开始运行 z::session() 会话 z::autoLoad() 懒加载(根据路径映射引入类文件) z::config() 配置合并 z::mapping() 路径映射(命名空间与类文件路径) z::input() php://input数据处理 输出常量**DATA** router{} 路由类 输出常量**ROUTE** ctrl{} 控制器类 debug{} 调试类 endnote :注册调试句柄; :注册懒加载zautoload(); note right //第三方类库注册到懒加载示例 function qiniuLoader($class) { $path = str_replace('\\', DIRECTORY_SEPARATOR, $class); $file = COMMON.'lib/' . $path . '.php'; file_exists($file) &amp;&amp; require_once $file; } zautoload('qiniuLoader'); endnote :将公用级/APP级config追加到超全局数组; :引入APP当前版本级全局函数 APP . 'functions.php'; :加载APP当前版本级config追加到超全局数组; partition **z::start()** { :self::input() php://input表单数据处理 输出到DATA常量; :self::mapping() 命名空间映射; :self::session() 会话功能; :获取当前控制器与当前操作 APP.ctrl/$ctrl.class.php; :执行控制器的前置方法init()(如有); :执行控制器的当前方法($act); note right * 业务逻辑 * 视图view(template import的使用) * model模型的引用 * lib类库的引用 endnote :执行控制器的后置方法 after()(如有); } } stop legend **知识点 :** * 主要命名空间: z,ext,common,ctrl,model,lib,base * 三层覆盖/追加(公用层COMMON,应用层APP_PATH,版本层APP,后向前覆盖/追加) * 公用层,版本层 common/mapping.php 定义命名空间与类文件路径映射 * 公用层,版本层 common/config.php 版本号,数据库等配置文件 * 公用层,版本层 common/base/DB_NAME.base.php数据库表结构及验证 * $GLOBALS全局数组的使用 endlegend @enduml </code></pre>

页面列表

ITEM_HTML