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开发文件系统实例讲解
Oct 09 PHP
杏林同学录(三)
Oct 09 PHP
用PHP和ACCESS写聊天室(一)
Oct 09 PHP
用php获取远程图片并把它保存到本地的代码
Apr 07 PHP
中英文字符串翻转函数
Dec 09 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
Dec 28 PHP
浅析php创建者模式
Nov 25 PHP
ThinkPHP打水印及设置水印位置的方法
Oct 14 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
Dec 29 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
Dec 04 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
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
php引用和拷贝的区别知识点总结
2019/09/23 PHP
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
vue.js中父组件调用子组件的内部方法示例
2017/10/22 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
python更改已存在excel文件的方法
2018/05/03 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
师范生求职自荐信
2014/06/14 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
活动经费申请报告
2015/05/15 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
Python打包exe时各种异常处理方案总结
2021/05/18 Python