关于安装
6.0版本基于PHP7.1版本开发,所以你的PHP运行环境必须是PHP7.1+(注意有时候你的命令行和WEB的PHP版本是不同的),最新版本已经兼容PHP8.0。
新版必须使用composer安装,因为6.0完全依赖composer使用,如果你通过git下载安装将不能正常使用。如果你使用composer安装ThinkPHP过程特别慢,请使用阿里云镜像或者科学上网。
对于新手而言,推荐的安装方式是
composer create-project topthink/think tp
系统会自动为你生成一个项目所需要的目录架构和需要的文件。
记住,无论如何,不要在项目里面修改核心框架目录下的任何文件,除了vendor目录之外的其它目录都属于你的项目代码,可以随意修改。
安装完成之后,进入cmd控制台,使用内置指令启动服务。
cd tp
php think run
现在你可以开始你的TP6开发之旅了。
在浏览器里面输入
http://localhost:8000
就会看到熟悉的欢迎页面(并显示当前安装的版本号)
如果需要更改默认端口,可以使用
php think run -p 80
请确保端口没有被占用。
该指令仅供学习和测试过程使用(免去安装WEB服务器的麻烦),不建议用于正式上线部署。
目录结构
默认安装后的目录结构如下:
www WEB部署目录(或者子目录)
├─app 应用目录
│ ├─controller 控制器目录
│ ├─common.php 公共函数文件
│ ├─event.php 事件定义文件
│ ├─ExceptionHandle.php应用异常处理类
│ ├─middleware.php 全局中间件定义文件
│ ├─provider.php 容器绑定定义文件
│ └─Request.php 应用请求对象类
│
├─config 配置目录
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─filesystem.php 文件磁盘配置
│ ├─lang.php 多语言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中间件配置
│ ├─route.php URL和路由配置
│ ├─session.php Session配置
│ ├─trace.php Trace配置
│ └─view.php 视图配置
│
├─view 视图目录
├─route 路由定义目录
│ ├─route.php 路由定义文件
│ └─ ...
│
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
│
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor 第三方类库目录(Composer依赖库)
├─.example.env 环境变量示例定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
系统生成的目录结构是经过精心设计的,没有必要做任何的调整,包括入口文件位置。所以确保你的WEB目录指向public目录而不是应用根目录。
app目录名对应的同时也是应用的根命名空间(而且不能更改),并且按照PSR-4规范进行应用类库的自动加载。
对于系统的缓存目录、日志目录和Session目录都是可以自定义的,但没有必要自定义runtime目录。
所以,在你对应用的目录结构进行更改之前,请确认你是否需要这么做,以及你明确知道相应的后果。
调试模式
默认安装后使用的是部署模式,开发过程中应当开启调试模式,便于调试问题。
把应用根目录下的.example.env 文件重命名为.env文件,这是用于本地开发的环境变量定义文件。
该文件默认已经开启了调试模式(确认是否包含下面一行环境变量定义)。
APP_DEBUG = TRUE;
ThinkPHP6.0版本是不支持通过配置参数开启调试模式,在提交版本库的时候会自动忽略.env文件,这样服务器部署后的代码就是部署模式。
新版默认安装会安装symfony/var-dumper库,因此你会看到不同以往样式的dump输出,并且可以使用其自带的dd输出并终止执行函数。
如果不喜欢这个调试输出的风格,可以直接卸载这个扩展而不会有任何的影响,并且依然可以使用dump函数。
composer remove symfony/var-dumper
配置文件
新版不再使用惯例配置文件,项目的默认配置(称之为全局配置,对所有应用适用)在安装完成后已经自动生成在项目根目录的config目录下,并且都提供了清晰的注释。
如果是多应用模式的话,每个应用可以有独立的配置文件,通常是在应用目录下的config目录。应用配置文件会覆盖全局配置文件中的同名参数。
配置文件默认使用PHP数组格式(后缀为php),你可以在环境变量中定义配置文件的后缀来改变配置文件定义格式,例如:
CONFIG_EXT = ini; // 支持ini/yaml/json格式
和之前版本的一个比较大的区别在于配置参数不再支持动态设置,所以下面的用法是不支持的
Config::set('app.app_host', 'thinkphp.cn');
实际上,大多数时候你甚至不需要去操作配置类(除非在开发一些扩展或中间件的时候需要读取配置参数),框架会在适当的时候自动加载这些配置,你不需要关心什么时候载入配置,或者什么时候读取了某个参数。因为你实际操作某个类库的时候,配置已经读取完成并自动工作。
关于核心框架具体有哪些配置参数,建议你仔细参考根目录config下的一系列配置文件,其中都有详细的注释说明。
如果你在开发环境和部署环境需要区分不同的配置,应当使用环境变量并保持一套统一的配置文件,config目录下自动生成的配置文件就大量使用了环境变量,例如数据库配置文件通常会使用如下配置定义:
// 数据库类型
'type' => Env::get('database.type', 'mysql'),
// 服务器地址
'hostname' => Env::get('database.hostname', '127.0.0.1'),
// 数据库名
'database' => Env::get('database.database', ''),
// 用户名
'username' => Env::get('database.username', 'root'),
// 密码
'password' => Env::get('database.password', ''),
// 端口
'hostport' => Env::get('database.hostport', '3306'),
对于本地开发环境,你可以使用前面提到的.env文件设置环境变量。
值得引起重视的是,6.0版本的Request类是没有任何配置参数的,具体原因后面会提及。
V6.0.8+版本开始,可以支持多环境配置文件,例如你可以定义多个环境变量定义文件
.env.develop
.env.preview
.env.testing
然后可以在入口文件中设置当前使用的环境变量文件名
发表评论