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数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
Nov 02 PHP
Laravel 4 初级教程之安装及入门
Oct 30 PHP
PHP实现下载断点续传的方法
Nov 12 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
Laravel 5 学习笔记
Mar 06 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
Mar 27 PHP
详解php比较操作符的安全问题
Dec 03 PHP
php文件上传类完整实例
May 14 PHP
php字符串的替换,分割和连接方法
May 23 PHP
WordPress分页伪静态加html后缀
Jun 08 PHP
php框架CodeIgniter主从数据库配置方法分析
May 25 PHP
实例讲解PHP表单验证功能
Feb 15 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使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
PHP pear安装配置教程
2016/05/14 PHP
php生成mysql的数据字典
2016/07/07 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
php创建图像具体步骤
2017/03/13 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
详解Django中的权限和组以及消息
2015/07/23 Python
详解Python3中的Sequence type的使用
2015/08/01 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
赔偿协议书范本
2014/04/15 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
师德先进个人材料
2014/12/20 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
2015年高中语文教学总结
2015/08/18 职场文书