项目中经常会将一些公共的方法或变量放在一个模块中,称之为公共模块。
公共模块直接继承Action类,其他模块都继承公共模块。
那么如何防止公共模块直接被外部访问呢?
例如,定义了一个公共模块 CommonAction
class CommonAction extends Action {
public $uid;
……
}
其他模块:
class UserAction extends CommonAction {
function index(){
echo $this->uid; //这里就可以直接使用公共类的变量
}
……
}
但是如果我们在CommonAction 中定义了一个操作时,如果不做处理,访客可以直接通过 /index.php/Common/操作名
而一般公共模块是不想让访客直接访问的。
这时,只要做一个简单的处理就可以。
1.在UserAction.class.php 文件中:
<?php
define("INC",1);//定义INC常量
class UserAction extends CommonAction {
……
}
?>
2.在CommonAction.class.php中:
<?php
//判断是否有定义INC,没有则直接退出
if(!defined("INC")){
exit('Access Denied');
}
class CommonAction extends Action {
……
}
?>