Thinkphp的Common模块作用

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

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 公共模型目录

本文分享自微信公众号 - Tech爬虫(php_pachong)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏sktj

python asyncio异步http(并行编程 30)

前言:python由于GIL(全局锁)的存在,不能发挥多核的优势,其性能一直饱受诟病。然而在IO密集型的网络编程里,异步处理比同步处理能提升成百上千倍的效率,弥...

14020
来自专栏Python爬虫与数据分析

爬取美团网站信息(三)

从数据库中获取街道的url,去访问,分析响应的数据,取出script中的数据。response中响应的数据可以先写成HTML,然后再工具中格式化代码,这样就比较...

9610
来自专栏V站

Tag标签页面如何优化呢

很多站长都不会如何制作tag页面,的ag页面使用并不恰当,甚至可能会有负效果。不过一两句话很难说清,所以单独写个帖子聊一下tag标签页面怎样SEO。

12920
来自专栏sktj

python concurrent.futures(并行编程 24)

nlist=[1,2,3,4,5,6,7,8,9,10] def evaitem(x): rs=count(x) print("item "+str(x)...

12730
来自专栏PHP饭米粒

Hyperf 发布 Swoole Enterprise 及 视图 及 Task 组件 | 企业级的 PHP 微服务协程框架

本次更新主要新增了 Swoole Enterprise 组件 和 视图 组件 和 Task 组件,同时强化了 JSON RPC 的异常处理和完善了 JSON R...

17320
来自专栏sktj

python 事件机制asyncio(并行编程 25)

async def hello(): print('Hello World:%s' % time.time())

6620
来自专栏Python爬虫与数据分析

爬取美团网站信息(二)

有了上一次的省市信息,从数据库中拿出市一级的信息,根据美团的请求的url,发现只需要拼音的简写,就可以组成新的url去访问

8930
来自专栏Python爬虫与数据分析

Python爬虫视频以及使用python3爬取的实例

链接: https://pan.baidu.com/s/18iRD2I9t4xHxiSqoe-hFHg 密码: afaf

10520
来自专栏Python爬虫与数据分析

Python3爬取英雄联盟所有英雄皮肤

打开英雄联盟官网,点击游戏资料,继续按F12,按F5刷新,就会发现有一个champion.js文件,复制这个js文件的地址.和王者荣耀不同,这个是js而王者是j...

20930
来自专栏shysh95

Dubbo注册中心之Zookeeper(续)

上图是Dubbo注册中心的整体类图,基于接口的实现方式可以方便我们扩展注册中心的实现方式,下面简单介绍一下各个类的作用:

18920

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励