dede助手小工具helper是如何载入的?

网站建设 2022-07-27 08:13www.1681989.com免费网站
今天在对dede的问答模块进行修改的时候发现直接调用/clude/helpers/archive.helper.php文件中的函数居然是可行的,找遍了ask模块的所有代码都没有发现这个是文件如何引入的。我记得有人说过dede的helper文件由系统自动引入,不需要自己手动完成。这个东西是如何自动引入的呢,是所有的地方都能用/clude/helpers/目录下面的所有文件吗? 答案是否。 官方之所以说/clude/helpers/下面的文件自动引入 是因为dede的php文件中几乎都re […]



今天在对dede的问答模块进行修改的时候发现直接调用/clude/helpers/archive.helper.php文件中的函数居然是可行的,找遍了ask模块的所有代码都没有发现这个是文件如何引入的。我记得有人说过dede的helper文件由系统自动引入,不需要自己手动完成。这个东西是如何自动引入的呢,是所有的地方都能用/clude/helpers/目录下面的所有文件吗?

答案是否。

官方之所以说/clude/helpers/下面的文件自动引入 是因为dede的php文件中几乎都require了/clude/mon.c.php这个初始化文件,而这个文件中完成了对所有/clude/helpers/下面的文件自动引入。相关代码如下


01 if(file_exists(DEDEDATA.'/helper.c.php'))
02 {
03 require_once(DEDEDATA.'/helper.c.php');
04 // 若没有载入配置,则初始化一个默认小助手配置
05 if (!isset($cfg_helper_autoload))
06 {
07 $cfg_helper_autoload = array('util''charset''strg''time''cookie');
08 }
09 // 初始化小助手
10 helper($cfg_helper_autoload);
11 }

 

这段代码的意思是如果变量$cfg_helper_autoload已经存在,则执行helper($cfg_helper_autoload);而默认是存在的。helper()这个函数实现了具体引入哪些/clude/helpers/下面的文件,是哪些呢,这要取决于$cfg_helper_autoload变量的内容。

我们看看这个$cfg_helper_autoload里面有些什么东西。原来这个变量是在/data//helper.c.php中定义的

01 <?php
02 //小助手配置项
03 $cfg_helper_autoload = array
04 (
05 'charset', / 编码小助手 /
06 'channelunit',/ 模型单元小助手 /
07 'strg', / 字符串小助手 /
08 'time', / 日期小助手 /
09 'file', / 文件小助手 /
10 'util', / 单元小助手 /
11 'validate', / 数据验证小助手 /
12 'filter', / 过滤器小助手 /
13 'cookie', / cookies小助手 /
14 'debug', / 调试小助手 /
15 'archive', / 文档小助手 /
16 'upload', / 上传小助手 /
17 'extend', / 扩展小助手 /
18 );
19 ?>

看到了吧 默认引用的helper中已经包括了archive文档小助手,而ask模块一开始就是require了/clude/mon.c.php的,一层一层的分析下来,可以得出这样的结论,凡是引入和/clude/mon.c.php文件的php代码,都是能直接执行默认的那几个助手小工具里面的代码的。
 


Copyright © 2016-2025 www.1681989.com 推火网 版权所有 Power by