快速入门

<br/> >d 原84PHP即将更名为APIPHP,正在做最后测试。 预计于2024年2月发布,APIPHP框架源码目前位于develop分支:[https://github.com/open-bst/APIPHP/](https://github.com/open-bst/APIPHP/) >i 本文档的最新修订日期是: > **2023-10-13** # 首次使用 请完成服务器伪静态规则的配置,详见【++**[路由](doc:tma1u6ks)**++】一节。 配置完成后,即可开始编写代码。 # 模块简介 在路径 <font color="#c7254e">`/lib/core/`</font> 中,包含了框架所有自带的类(Class)。但在我们在所有关于本框架的表述中,将把它称作 <font color="#c7254e">`模块`</font> 。 框架源码包中已经包含了许多常用模块,您也可以自行编写模块。 在路径 <font color="#c7254e">`/config/core/`</font> 中,可能存在与模块名相同的 <font color="#c7254e">`配置文件`</font> 。 # 模块调用 * 语法与原生PHP调用类静态方法一致: **<font color="#0099ff"><kbd>模块名</kbd> :: <kbd>方法名</kbd> ( <kbd>传参数组</kbd> )</font>** * 举例: **<font color="#0099ff"></font><font color="#999">\$Var=</font> <font color="#ff6600">Db</font> <font color="#0099ff">::</font> <font color="#ff6600">select</font> <font color="#0099ff">(</font> <font color="#999">\$Config</font> <font color="#0099ff">)</font> <font color="#999">;</font>** 那么将会把 <font color="#c7254e">`$Config`</font> 作为参数传入 <font color="#c7254e">`Db`</font> 模块中的 <font color="#c7254e">`select()`</font> 方法,并将返回的值存放在 <font color="#c7254e">`$Var`</font> 变量中。 如果模块的方法没有返回值,或不需要用到返回值,则无需在模块名前加上变量赋值语句。 >w 为了代码书写简洁,上述内容中已经默认使用了 <font color="#c7254e">`\core\`</font> 命名空间。 ## 快捷传参 本框架使用独创的 <font color="#c7254e">`快捷传参`</font> 方式向模块方法传递参数,传参数组(即前述例子中的 <font color="#c7254e">`$Config`</font> )应当遵循如下形式: ```php $Parameter=[ '参数1'=>'参数1的值', '参数2'=>'参数2的值', '参数3'=>'参数3的值' ]; ``` 传参数组是一个数组,元素的 <font color="#c7254e">`键`</font> 方为参数名,元素的 <font color="#c7254e">`值`</font> 为参数名对应的参数值,参数值可以是多种数据类型中的一种,取决于模块方法的规定。 为了便于开发,可将数组直接置于调用模块方法的代码中。 具体到前述例子,可以用如下方式完成参数的传递: ```php $Config=[ 'table'=>'user', 'field'=>'id', 'value'=>'1003' ]; $Var=Db::select($Config); ``` 或者,将数组直接置于调用模块方法的代码中: ```php $Var=Db::select([ 'table'=>'user', 'field'=>'id', 'value'=>'1003' ]); ``` >i 传参数组中的键,即 <font color="#c7254e">`参数名`</font> 还可以用 <font color="#c7254e">`中文参数名`</font> 代替。 例如 <font color="#c7254e">`['字段'=>'id']`</font> 等同于 <font color="#c7254e">`['field'=>'id']`</font> ,增加代码可读性的同时减少记忆负担。 详情见各模块方法的参数说明。 ## 传参数组的简写 如果模块方法的参数列表中,只有一个 <font color="#c7254e">`必传`</font> 的参数,那么该方法可以省略转入键名,即将此必传参数作为传参数组中,不指定键名的第一个元素(即键名为 <font color="#c7254e">`0`</font> ),例如: ```php Cache::compile([ '/user/login' ]); ``` 简写并不影响可选参数的传入,例如: ```php Cache::compile([ '/user/login', 'force'=>TRUE ]); ``` >w 是否支持参数简写,取决于模块方法的参数规定。 # 模板 框架模板文件的默认路径是 <font color="#c7254e">`/source`</font> 。 模板文件将会在经过编译后存放在缓存目录 <font color="#c7254e">`/temp/cache`</font> 下。模板文件是不会被运行的,而缓存文件会被运行。 例如访问 <font color="#c7254e">`aaa.com/b/test`</font> 时,在 <font color="#c7254e">`/temp/cache`</font> 目录下,文件<font color="#c7254e">`b/test.php`</font> 是真实存在的,这些文件就是缓存文件。 # 缓存及自动编译 在 <font color="#c7254e">`/temp/cache`</font> 下的所有文件均为经过编译的 <font color="#c7254e">`缓存文件`</font> 。 框架具有自动编译机制,如果存在尚未编译的模板文件,或存在模板文件的 <font color="#c7254e">`修改时间`</font> 晚于缓存文件的修改时间且已经过了缓存有效期,则框架会对该模板自动进行编译。 >d 切勿直接修改缓存文件!超过缓存有效期后,被修改的缓存文件将被回滚。 如遇此类情况,请删除 <font color="#c7254e">`/temp/cache`</font> 目录下的对应文件进行缓存重建。 * 框架具有无效缓存清空机制,如果不存在缓存所对应的模板文件,则会 <font color="#c7254e">`清除`</font> 对应的缓存。即当您删除某个模板文件后,对应的缓存并不会立即被清空。只有在将来该缓存被请求时,才会清除缓存。 * 当服务器调整系统时间后,或服务器时间异常时,可能会导致自动编译 <font color="#c7254e">`失效`</font> 。框架会自动重置模板文件的修改时间来修复这个问题。如果仍然无法解决,请调整服务器时间,并清空 <font color="#c7254e">`/temp/cache`</font> 目录下的所有文件,或者使用 <font color="#c7254e">`Cache`</font> 模块重建缓存(详情见模块说明)。 # 文件引入&使用库 在实际场景中往往需要使用 <font color="#c7254e">`require`</font> 或 <font color="#c7254e">`include`</font> 引入一些常用的文件,这些文件应该放在 <font color="#c7254e">`/lib`</font> 目录下。 如果需要引入lib目录下的 <font color="#c7254e">`test.php`</font> ,可通过如下方式引入: * 快速引入: <font color="#c7254e">`require('test.php');`</font> * 通过完整磁盘路径: <font color="#c7254e">`require(__ROOT__.'/lib/test.php');`</font> # 报错机制 框架拥有完善的报错机制,可显示详细的报错信息和文件的路径、出错行号。 错误码对应的详细错误信息,请在文档 <font color="#c7254e">`错误码`</font> 中了解。 >d 由于PHP语言的限制,有少数在代码运行前的报错无法被捕获。此部分报错将由 <font color="#c7254e">`PHP系统`</font> 完成。 详情请参见 <font color="#c7254e">`Api`</font> 模块说明文档。 # 生命周期 ``` 服务器收到请求(命令行执行忽略此步) │ ├─伪静态(命令行执行忽略此步) │ ├─index.php收到请求 │ ├─定义常量、注册函数 │ ├─加载全局Hook配置文件、初始化Hook功能 │ ├─执行路由、校验缓存 │ ├─加载缓存文件 │ └─结束运行 ``` # 版权声明 > 本框架为免费开源、遵循Apache2开源协议的框架,但不得删除框架内文件的版权信息,违者必究。 > > This framework is free and open source, following the framework of Apache2 open source protocol, but the copyright information of files are not allowed to be deleted,violators will be prosecuted to the maximum extent possible. > > ©2023 Bux. All rights reserved.