前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Thinkphp的Common模块作用

Thinkphp的Common模块作用

作者头像
PM吃瓜
发布2019-08-12 14:51:38
2.5K0
发布2019-08-12 14:51:38
举报
文章被收录于专栏:PM吃瓜(公众号)PM吃瓜(公众号)

# 其他模块里的控制器/模型/视图, 继承公共模块里的控制器/模型/视图

Common模块和普通模块一样,可以添加控制器、模型和视图,并且支持多层,但不能直接访问,只能继承,其中模型层 可以作为公用模型,在D方法实例化中调用。D函数实例化的时候 才能自动判断 当前模块模型类不存在的时候实例化公共模块中的同名模型,自己实例化肯定做不到这点了。

# common.php里的函数可以在任何地方直接调用

# common下可以设置文件夹如 Controller, Model, Conf,Common

// 3.2.3本人最看重的特点就是“模块独立”,尽量不要跨模块,

如果每个模块都需要的东西我们就放到公共模块下面;

如果仅仅当前自己的模块需要,那么就写在当前自己的模块里面。

# Common里定义Controller类,在home里引用为父类

怎么定义随便你 但是想要做到自动加载就需要按照目录结构来定义命名空间,例如

Common/Library/Org/Util/ClassName

或者你注册一个新的根命名空间:Library,在配置文件中定义如下

'AUTOLOAD_NAMESPACE'=>array(

'Library'=>COMMON_PATH.'Library/',

)

然后你的类名就可以用

Library/Org/Util/ClassName

namespace Common\Controller;use Think\Controller; class YanzhenController extends Controller { public function _initialize(){ echo 111; } /*public function _initialize(){ echo 111; }*/ } --------------------------------------------namespace Home\Controller;use Think\Controller;use Common\Controller\YanzhenController; class IndexController extends YanzhenController{ public function index(){ $this->display(); }

# Common里定义Model类,在home里引用 #common下可放的内容

/Application/Common/Common/function.php 这个作为常用公共函数文件; 平时经常用的自定义函数都可以放里面; 比如说 之前写过的p函数 以符合人类阅读的方式打印php数组 然后还建议写:判断用户是否登陆的函数、获取当前登陆用户id的函数、上传函数、图片处理函数、验证码函数、分页函数等等;

/Application/Common/Conf 公共配置项目录下 我建议至少创建如下3个文件 config.php、db.php、webconfig.php 为什么要创建3个配置项文件呢?我来详细的讲解这三个文件的作用; config.php里面都是系统的配置项; 我们这个文件主要是用来覆盖框架默认的配置项; 这个文件好理解些; db.php 数据库的账号密码等; 单独放一个文件是因为很多时候; 这个文件需要根据应用安装的时候填写的数据库账号密码生成的文件; 具体可以查看文章中的使用:thinkphp安装引导程序 webconfig.php 这个文件放置一些可以在后台更改的配置; 比如说是否关闭网站、网站的关键字之类的;这个文件独立出来的原因同上;

/Application/Common/Controller 公共控制器目录 为了开发维护升级的方便 以及尽量避免改动框架的文件的原则; 不改动框架的Controller.class.php 所以呢;这个目录下一定要建一个BaseController.class.php; 以后所有的Controller都继承它; 这样只要在BaseController里面写的方法; 所有的控制器都继承到了;都可以用到; 就例如我们可以写一些$this->success() $this->error() $this->display()类似的所有Controller都可以用的方法; 但是呢;我们开发的项目可能会比较复杂; 只有一个BaseController会比较杂乱; 所以我们还可以根据业务需求再建很多XXBaseContr.class.php来继承BaseController; 我们来构建一种场景; 我想能分别控制:关闭整站的访问、只关闭后台管理员的访问、只关闭普通用户的访问; 因为所有的Controller都继承了BaseController.class.php; 所有我只需要在BaseController.class.php的_initialize或者__construct构造函数中写一个die; 这样无论怎么访问都会被die掉而无法继续执行;这个过程一般是在后台配置的; 再因为后台的的controller都继承了AdminBaseController.class.php所有关闭的道理同上了; 当然只是用来关闭就太低级了;AdminBaseController.class.php 可以在__construct构造函数中判断如果不是管理员;禁止访问; 我们只需要所有把所有需要有管理员权限才可访问的控制器全部继承 AdminBaseController; 这样这些控制器就不需要每个都判断是否是管理员了; 具体可以看 thinkphp集成系列之rbac的升级版auth权限管理系统demo UserBaseController.class.php 等其他xxBaseController同样道理; 比如说用户的个人中心必须是登陆状态才可访问等等; 还有个HomeController.class.php不用我说就知道可以干嘛了吧;

/Application/Common/Model 公共模型目录

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tech爬虫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档