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 相关文章推荐
PHP5新特性: 更加面向对象化的PHP
Nov 18 PHP
PHP Google的translate API代码
Dec 10 PHP
php addslashes和mysql_real_escape_string
Jan 24 PHP
PHP 文件缓存的性能测试
Apr 25 PHP
PHP 函数学习简单小结
Jul 08 PHP
Destoon实现多表查询示例
Aug 21 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
简单解决新浪SAE无法上传文件的问题
May 13 PHP
PHP命名空间namespace及use的简单用法分析
Aug 03 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
laravel框架如何设置公共头和公共尾
Oct 22 PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 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
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
php简单日历函数
2015/10/28 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
js可突破windows弹退效果代码
2008/08/09 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
IE无法设置短域名下Cookie
2010/09/23 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
Python 常用string函数详解
2016/05/30 Python
Python虚拟环境项目实例
2017/11/20 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
django项目中新增app的2种实现方法
2020/04/01 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
关于读书的演讲稿500字
2014/08/27 职场文书
免职证明样本
2014/10/23 职场文书
丽江古城导游词
2015/02/03 职场文书
原告离婚代理词
2015/05/23 职场文书
未婚证明范本
2015/06/15 职场文书