Thinkphp5.0自动生成模块及目录的方法详解


Posted in PHP onApril 17, 2017

本文实例讲述了Thinkphp5.0自动生成模块及目录的方法。分享给大家供大家参考,具体如下:

Thinkphp5.0发布已有些时日了,据说性能方面有很大的提升,按照官方的话,ThinkPHP5.0版本是一个颠覆和重构版本,采用全新的架构思想,引入了很多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,并针对API开发做了大量的优化。是时候得download一份,研究一下。今天主要讲讲其自动创建模块及目录。

Thinkphp5.0自动生成模块较ThinkPHP3.2,确实有很大的变化。

再次,主要讨论Thinkphp5.0生成模块。

准备工作

首先从官方下载ThinkPHP5.0,下载后文件结构如下:

Thinkphp5.0自动生成模块及目录的方法详解

只保留thinkphp目录其他的所有目录及文件一并删除(可以先转移到其他地方,以备后续使用)

现在就开始生成项目需要目录

thinkphp3.2创建目录貌似简单,但是thinkphp5.0却更加灵活。不禁想起了良才是把复杂的事情变简单;庸才是把简单的事情变复杂;蠢材是把简单的事情变得更简单,复杂的事情变得更复杂。

1.创建入口文件index.php,虽然官方强调入口文件位置,可以随意放置,但是为了便于学习,还是放在根目录下

// 应用入口文件
define('APP_PATH', 'application/'); // 定义项目路径,和之前3.2版本没有区别
define('APP_AUTO_BUILD',true); //开启自动生成
define('APP_DEBUG', true);// 开启调试模式
define('MODULE','module');
// 加载框架引导文件
require 'thinkphp/start.php';
// 执行应用
\think\App::run();

其实我个人觉得,TP官方为啥不把,程序的执行\think\App::run(); 放置在start.php  目录呢?最后,发现原来TP5.0引入了一个define('APP_AUTO_RUN', true);常量,当在index.php页面定义了改常量,项目就会自动执行,不需要添加\think\App::run();

2.创建项目名与build.php文件

个人感觉thinkphp5.0做的不好的一点就是上面定义的项目文件夹需要自己创建,究其原因,因为里面要放置项目创建配置文件build.php。但是为啥TP官方不把build.php放置在根目录下呢?然后自动生成application文件夹呢?在这一点我觉得TP3.2做的就比5.0好。

现在来讨论一下build.php,官方默认的bulid.php内容如下,现在来讨论一下

return [
  // 生成运行时目录
  '__dir__' => ['runtime/cache', 'runtime/log', 'runtime/temp', 'runtime/template'],
  '__file__' => ['common.php'],
  // 定义index模块的自动生成
  'index'  => [
    '__file__'  => ['common.php'],
    '__dir__'  => ['behavior', 'controller', 'model', 'view'],
    'controller' => ['Index', 'Test', 'UserType'],
    'model'   => [],
    'view'    => ['index/index'],
  ],
  // 。。。 其他更多的模块定义
];

可以给每个模块定义需要自动生成的文件和目录,以及MVC类。

__dir__ 表示生成目录(支持多级目录)
__file__ 表示生成文件(不定义默认会生成 config.php 文件)
controller 表示生成controller类
model表示生成model类
view表示生成html文件(支持子目录)

自动生成以APP_PATH 为起始目录, __dir__ 和 __file__ 表示需要自动创建目录和文件,其他的则表示为模块自动生成。

模块的自动生成则以 APP_PATH.'模块名/' 为起始目录。

最后直接运行index.php文件即可。

Thinkphp5.0自动生成模块及目录的方法详解

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php xml实例 留言本
Mar 20 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
May 16 PHP
基于php伪静态的实现详细介绍
Apr 28 PHP
php跨站攻击实例分析
Oct 28 PHP
PHP实现获取FLV文件的时间
Feb 10 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
php实现读取和写入tab分割的文件
Jun 01 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
php while循环控制的简单实例
May 30 PHP
php通过各种函数判断0和空
Jul 04 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP fopen中文文件名乱码问题解决方案
Oct 28 PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 #PHP
PHP中快速生成随机密码的几种方式
Apr 17 #PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 #PHP
关于php 高并发解决的一点思路
Apr 16 #PHP
PHP无限极分类函数的实现方法详解
Apr 15 #PHP
基于ThinkPHP实现的日历功能实例详解
Apr 15 #PHP
php修改数组键名的方法示例
Apr 15 #PHP
You might like
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
jQuery查找和过滤_动力节点节点Java学院整理
2017/07/04 jQuery
element-ui表格数据转换的示例代码
2018/08/24 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
JACK & JONES英国官方网站:欧洲领先的男装生产商
2017/09/27 全球购物
内业资料员岗位职责
2014/01/04 职场文书
营销学习心得体会
2014/09/12 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
交通安全主题班会
2015/08/12 职场文书
给校长的建议书范文
2015/09/14 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书
python非标准时间的转换
2021/07/25 Python