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 相关文章推荐
将RTF格式的文件转成HTML并在网页中显示的代码
Oct 09 PHP
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
php通用防注入程序 推荐
Feb 26 PHP
php数组一对一替换实现代码
Aug 31 PHP
详解PHP对数组的定义以及数组的创建方法
Nov 27 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
Mar 04 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
php实现的mongoDB单例模式操作类
Jan 20 PHP
PHP预定义超全局数组变量小结
Aug 20 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
Apr 23 PHP
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
Apr 16 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
Yii2中添加全局函数的方法分析
2017/05/04 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python中使用mysql数据库详细介绍
2015/03/27 Python
Python实现注册登录系统
2017/08/08 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
Python中关于浮点数的冷知识
2019/09/22 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
python 决策树算法的实现
2020/10/09 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
浅谈HTML5 & CSS3的新交互特性
2016/07/19 HTML / CSS
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
洗车工岗位职责
2014/03/15 职场文书
2014年班主任工作总结
2014/11/08 职场文书
考研复习计划
2015/01/19 职场文书
单位更名证明
2015/06/18 职场文书
学术会议开幕词
2016/03/03 职场文书
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL