第九章 二次开发

一 AKCMS目录结构

二 常见问题:
1 如何在AKCMS中HOOK(钩子)执行自己的代码?
2 如何在AKCMS菜单中增加项目?

三 利用AKCMS的公用函数编写单独的PHP程序

只要包含/akcms/include/common.inc.php即可引用AKCMS的公用函数。引用之后会初始化一系列变量供后面的程序使用:

$os:操作系统(windows或linux)
$lr:不同操作系统下默认的换行符
$__dbtype:数据库类型(mysql或sqlite)
$__callmode:调用类型(web或command)
$onlineip:IP地址
$thetime:程序开始执行时的时间戳
$db:数据库对象(创建数据库链接需要时间,如果程序中不需要数据库查询,为节省时间,可以在引用common.inc.php之前初始化一个$nodb = 1;即可)
$systemurl:系统地址
$homepage:首页地址

当服务器配置自动为GET、POST等注册全局变量时,common.in.php会unset掉这些全局变量。

可使用的功能函数

debug($variable, $exit = 0, $type=0);//输出一个变量的内容,当第二个参数不为空则exit,$type决定了输出的类型,默认0是虚线框显示;1是alert弹出来;2也是alert,不过前后不加<script>标签,适用于本身就在标签中;3是直接输出,适用于命令行程序中显示。
monitor($message = '');//打一个计时点,当解决效率问题的时候,可以在程序中加入多个计时点,配合monitor_log就可以知道每一段代码消耗了多少时间,从而发现问题。
monitor_log($log = '');//输出计时点的分析结果,如果$log指定的话分析结果将计入日志文件

四 注意事项
1 当一次性执行大量查询的时候可能会占用大量内存,因为$db数据库对象每次查询都会把SQL语句放到数组中,当同时进行大量查询时,数组过大占用太多内存。解决方法是在执行query方法后清空查询语句的数组:
$db->query($sql);
$db->queries = array();

2