![](https://csdnimg.cn/release/download_crawler_static/2750448/bg4.jpg)
欢迎大家与我交流, Email : lcq.1983@qq.com 林超旗
4 / 19
}
/* 或许郁闷了,为何要去掉前 2 个参数呢?其实,很简单,第一个参数是 plugin ,
第二个参数是插件所在文件夹名,加载过插件之后就用不到了,不要忘了,
我们的 $this->get 可是取的对 $_SERVER['QUERY_STRING'] 进行拆分后的数组哦
*/
$this->get=array_slice($this->get,2);
}
或许你还迷惑,那就看一下插件的 url 吧,其实是这样子的:
index.php?plugin- 插件所在文件夹名 - 插件控制器文件名 - 操作 - 其它参数
比如: index.php?plugin-hdmoo-hdmoo-list
run()
run()
run()
run() : 这个函数有印象吧,对了,就是在入品文件中看到过的!它主要有 2 个功能: 1
)
检查用户是否具有执行该控件器方法的权限 2 )执行相应的方法
/* 创建控制器对象,由此你也可以看出这个框架的控件器名都是 control ,
这样不太合理,毕竟有时我们需要在一个控制器中创建别一个控制器的对象
*/
$control = new control($this->get,$this->post);
/ 请求的方法,这个就是我们 url 中的第 2 个参数,现在知道 plugin 时为何去掉前 2 个
参数了吧;当然,由此你也可以知道,方法都是以 do 开头的
*/
$method = 'do'.$this->get[1];
if(method_exists($control, $method)) {
/* 检查当前用户是否具体对应控制器方法的执行权, 如果具有就执行该方法, 否则给 予
提示,提示分 2 种,一种是后台的,一种是前台的,
*/
if( $control->checkable($this->get[0].'-'.$this->get[1]) ){
$control->$method();
}else{
$isadmin= ('admin'==substr($this->get[0],0,5));
$control->message($control->view->lang['refuseAction'],'', $isadmin);
}
}else {
exit('method \''.$method.'\' not found!');
}
到目前为至我们对核心类 hdwiki 分析完了,对 $_GET
,
$_POST 等的处理,调用管理等 都
是在这个类中实现的,整体看上去很简洁明了,效率也高。
你可能已经注意到了, hdwiki 默认的主页是可以换风格的,换风格当然就要设置 css 的路
径了, 用户的配置信息从哪来等等这些, 其实, 我们可以看一下 base.class.php , 这也是 hdwi ki
的核心文件,至于这样设计是否合理,我们稍后再说,先来看下这个文件!
1.3 基类 base.class.php
base.class.php
base.class.php
base.class.php 分析
这个类的功能强大,是控制器的父类,每个模型也用到了这个类的对象,由此可见这个类
是多么重要,当然,也能反映出这样设计的不合理性。总的来说这个类有以下功能: