• app: metinfo6.0

0x01 目录

metinfo 目录有点乱, 仔细一看,每一个模块都是加载常量然后包含入口文件../app/system/entrance.php

屏幕快照 2019-11-19 下午2.50.31.png

主要业务功能是在app下,入口在entrance.php,看逻辑流: entrance 加载了一堆配置之后开始加载类:
app/system/include/class/load.class.php,这个类会把内容加载到pricate static $own_include_dir=''
回到load::module();静态调用这个方法,没有传参

  1. <?php
  2. /**
  3. * 加载模块
  4. * @param string $funcname 需要引用模块路径
  5. * @param string $classname 模块名称,一般不需要加.class.php
  6. * @param string $action 同_load_class的$action参数
  7. * @return 同_load_class
  8. */
  9. public static function module($path = '', $modulename = '', $action = '') {
  10. if (!$path)
  11. {
  12. if (!$path) $path = PATH_OWN_FILE;
  13. if (!$modulename) $modulename = M_CLASS;
  14. if (!$action) $action = M_ACTION;
  15. if (!$action) $action = 'doindex';
  16. }
  17. return self::_load_class($path, $modulename, $action);
  18. }

这里通过的是entrance中的这里传的参数。

  1. <?php
  2. if (!defined('M_MODULE')) {
  3. $ia = $_GET['a'] ? $_GET['a'] : $_POST['a'];
  4. $ic = $_GET['c'] ? $_GET['c'] : $_POST['c'];
  5. define ('M_MODULE', 'include');
  6. define ('M_CLASS', $ic);
  7. define ('M_ACTION', $ia);

然后_load_class,传入三个参数,分别是$path模块对应路径, $classname模块类名,$action方法。
这里是实例化的位置。