齐博x1第四季《模块插件的制作》系列5-让Test类继承系统类
上一节我们创建了一个Test类下的index方法,点击菜单后这个方法内容显示在了主界面
但是如果我们直接访问这个方法,也是可以显示的,没有受到后台的约束
比如:
后台关键点在哪,后台是需要管理登录才可以看到内容的,我们直接访问这个方法却可以直接访问,这里问题就大了。
怎样解决呢,通常都是需要我们自己写好登录条件进行其判断。
但是我们现在不是自己开发,只是开发X1系统的模块,所以很多东西都必须依靠系统的架构进行继承。因为系统本身这些都已经写好了。
这里我们以继承系统的C类来说明,初级玩家一般只用到一些简单的方法就可以开发不错的模块了
看代码:
关键点:
extends 代表继承,这里继承的是 app\common\controller\admin 下的 C,
所以要使用use加载一下这个C,因为我们现在写的是后台入口,所以需要加载的是系统提供admin下的这个C类
因为index下和member下都有,不要弄混了,因为提供的方法不同
下面我们在进行这个方法的外部访问,就会弹出需要登录了,
因为已经被约束在后台才可以访问。
是不是如此简单。
额外说明:这里特别用C类继承,来说明举例,是因为C里面包含了好了一些增删改查,更容易让大家上手,
因为很多模块开发,都是依据CMS复制过来改版开发,而cms主要的content方法就是依赖C提供的方法,
但是很多业务场景并不是这些简单的内容控制,所以当大家晋升为高级玩家的时候,一般都是继承
app\common\controller\AdminBase 这个类只对后台初始化进行操作,并没有提供其他的功能性方法,让大家干净的开发。
至于系统顶层的Base类,是对系统的登录,路由等一些公共的方法进行处理,大家未晋升到骨灰级玩家时,就不需要考虑这些了。
补充php小知识:
继承,在面向对象的编程中继承是必须要掌握的,这里简单的描述下。
继承可以按照字面意思理解,起到父辈向子辈传承作用,父辈有的东西,可以被子辈继承
代码里就是父类的方法,如果子类继承了,那么子类就可以直接使用,比如在A类写了一个abc方法,B类继承了A,那么B类就可以直接使用abc方法
看下代码:
class A { public function abc(){} } class B extends A{ }
这时候B类里没有任何方法,但是可以直接使用abc方法,这就是因为继承。
来源: 神盾工作室 转载请注明出处!
查看更多评论