- app: metinfo6.0
0x01 目录
metinfo 目录有点乱, 仔细一看,每一个模块都是加载常量然后包含入口文件../app/system/entrance.php
主要业务功能是在app
下,入口在entrance.php
,看逻辑流: entrance 加载了一堆配置之后开始加载类:app/system/include/class/load.class.php
,这个类会把内容加载到pricate static $own_include_dir=''
回到load::module();
静态调用这个方法,没有传参
<?php
/**
* 加载模块
* @param string $funcname 需要引用模块路径
* @param string $classname 模块名称,一般不需要加.class.php
* @param string $action 同_load_class的$action参数
* @return 同_load_class
*/
public static function module($path = '', $modulename = '', $action = '') {
if (!$path)
{
if (!$path) $path = PATH_OWN_FILE;
if (!$modulename) $modulename = M_CLASS;
if (!$action) $action = M_ACTION;
if (!$action) $action = 'doindex';
}
return self::_load_class($path, $modulename, $action);
}
这里通过的是entrance
中的这里传的参数。
<?php
if (!defined('M_MODULE')) {
$ia = $_GET['a'] ? $_GET['a'] : $_POST['a'];
$ic = $_GET['c'] ? $_GET['c'] : $_POST['c'];
define ('M_MODULE', 'include');
define ('M_CLASS', $ic);
define ('M_ACTION', $ia);
然后_load_class
,传入三个参数,分别是$path
模块对应路径, $classname
模块类名,$action
方法。
这里是实例化的位置。