您当前的位置: 站长圈 > 后端教程

phpcms v9二次开发(基础篇)3:后台控制器

来源:|1 作者:adminroy 点击: 0

前面我学了前台控制器和访问前台模板,今天我要学建一个后台控制器。后台控制器和前台控制器是有区别的,它们的区别在于前台浏览(不含权限控制),后台管理(含权限控制)

我先在quan模块下面新建一个后台控制器mytest_admin.php,名字命名规则之前说过,起什么名字是随意的,只要是一个php文件,但起了名字以后类文件里的类名一定要和类文件同名。后台控制器是这样写的:
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_app_class('admin','admin',0);
class mytest_admin extends admin {
         public function __construct() {
         }
         public function init() {
                   $mystr = '我是后台控制器';
                   echo $mystr;
         }
}
?>
解析:load_app_class($classname, $m = '', $initialize = 1)是加载应用类方法,它有3个参数,第1个参数是类名,第2个参数是模块,第3个参数是是否初始化,0是不初始化,1是初始化。这里第一个admin指的是phpcms\modules\admin\classes\admin.class.php这个类,第二个admin是phpcms\modules\admin模块。要注意,下一步要继承admin类现在就必须加载admin模块下的admin
 
mytest_admin extends admin就是mytest_admin 继承了 admin这个类,然后就可以使用这个已经写好的admin类了。注意:你添加的控制器类继承了其他的类,你要小心你控制器的方法名不要和该类中的方法名一样了,否则会造成影响,具体请查看admin类中有哪些方法。
 
public function __construct() {}是一个构造函数,构造函数是类中的一个特殊函数,它的意思就是加载这个类的时候会自动调用这个函数,这里是一个空的构造函数,是因为这个类继承了admin类,所以用空的构造函数覆盖了父类admin的构造函数,从这里也可以看出刚才提醒的子类的方法如果和父类的方法名相同就会覆盖的事情。虽然是一个空的构造函数,但是和不写还是有区别的,空的是覆盖,不写就会调用父类的构造函数,在这个例子里如果不写这个空的构造函数会显示什么呢,等一下也可以测试一下。
 
 
然后可以用http://wwwquan95.com/index.php?m=quan&c=mytest_admin&a=init来访问浏览它,正常当然是输出了“我是后台模板”这几个字。如果删除了空的构造函数试试,这时候就会显示如图的效果了:
1.jpg
 

总结:今天学习了要extends继承admin类必须先加载应用类load_app_class('admin','admin',0)的方法,还知道了在子类建一个空的构造函数是覆盖父类的构造函数,而不是等于没写。