基本介绍

简介

ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,
自2006年诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,尤其注重开发体验和易用性,
并且拥有众多的原创功能和特性,为WEB应用和API开发提供了强有力的支持。

安装ThinkPHP

// 安装稳定版命令
composer create-project topthink/think tp

// 更新升级命令
composer update topthink/framework

// 安装开发版命令(适合学习)
composer create-project topthink/think=6.0.x-dev tp

测试运行

// 运行命令
php think run

// 执行运行命令后在浏览器输入
http://localhost:8000/

注意的是在实际开发中测试时,应该配置虚拟主机并且域名绑定public目录,确保不是项目根目录

目录结构

单应用模式目录结构


www  WEB部署目录(或者子目录)
├─app           应用目录
│  ├─controller      控制器目录
│  ├─model           模型目录
│  ├─ ...            更多类库目录
│  │
│  ├─common.php         公共函数文件
│  └─event.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                 命令行入口文件

多应用模式目录结构

├─app 应用目录
│  ├─index              主应用
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  ├─config          配置目录
│  │  ├─route           路由目录
│  │  └─ ...            更多类库目录
│  │ 
│  ├─admin              后台应用
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  ├─config          配置目录
│  │  ├─route           路由目录
│  │  └─ ...            更多类库目录
│
├─public                WEB目录(对外访问目录)
│  ├─admin.php          后台入口文件
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─config                全局应用配置目录
├─runtime               运行时目录
│  ├─index              index应用运行时目录
│  └─admin              admin应用运行时目录

多应用模式

如果要使用多应用模式,请安装多应用模式扩展think-multi-app

composer require topthink/think-multi-app

Env环境变量配置

安装ThinkPHP后在项目的根目录.example.env环境变量示例文件,你可以直接改成.env文件后进行修改。

# 应用调试模式
APP_DEBUG =  true

环境变量配置的参数会全部转换为大写,值为 offnofalse 等效于 布尔值false,值为 yesontrue 等效于 布尔值的true

设置环境变量

// 环境变量不支持数组参数,如果需要使用数组参数可以,可以使用
[DATABASE]
USERNAME = root
PASSWORD = 123456

// 如果要设置一个没有键值的数组参数,可以使用
PATHINFO_PATH[] =  ORIG_PATH_INFO
PATHINFO_PATH[] =  REDIRECT_PATH_INFO
PATHINFO_PATH[] =  REDIRECT_URL

// 要引用Env门面
use think\facade\Env;
Env::set('name','value)

获取环境变量

// 要引用Env门面
use think\facade\Env;

// 环境变量的获取不区分大小写
Env::get('database.username');
Env::get('database.password');
Env::get('PATHINFO_PATH');

// 获取环境变量 如果不存在则使用默认值root
Env::get('database.username', 'root');

// 可以直接在配置文件中使用环境变量进行本地环境和服务器的自动配置
return [
    'hostname'  =>  Env::get('hostname','127.0.0.1'),
];

Config配置

配置文件分为全局配置和应用配置,一般单应用模式的配置文件是属于全局配置文件,而多应用模式的配置文件有全局配置和应用配置,每个应用可以有独立配置文件,相同的配置参数会覆盖全局配置。

├─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           视图配置
│  └─ ...               更多配置文件
│

由于架构设计原因,下面的配置只能在环境变量中修改。

配置参数 描述
app_debug 应用调试模式
config_ext 配置文件后缀

要使用Config类,首先需要在你的类文件中引入

use think\facade\Config;

获取配置

// 获取一级配置的所有的参数(每一个配置文件都是独立的一级配置)
Config::get('app');
Config::get('route');

// 读取单个配置参数
Config::get('app.app_name');
Config::get('route.url_domain_root');

// 读取数组配置(理论上支持无限级配置参数读取)
Config::get('database.default.host');

参数批量设置

Config类不再支持动态设置某个配置参数,但可以支持批量设置更新配置参数

// 批量设置参数
Config::set(['name1' => 'value1', 'name2' => 'value2'], 'config');

// 获取配置
Config::get('config');

入口文件

ThinkPHP6.0采用的是单一的入口模式进行项目部署和访问,入口文件位于public目录下面,

最常见的入口文件就是index.php,可以给每个应用增加入口文件,

例如给后台应用单独设置的一个入口文件admin.php。

如果开启自动多应用的话,一般只需要一个入口文件index.php。

静态资源

网站的资源文件访问不会影响正常的操作访问,只有当访问的资源文件不存在的时候才会解析到入口文件,一般就会提示模块不存在的错误。

一般静态资源都是放在public目录下的子目录里,切记,不能放在public以外的目录,包括app目录。建议规范一下

// 静态资源目录结构
public
├─index.php     应用入口文件
├─static        静态资源目录   
│  ├─css        css目录
│  ├─js         js目录
│  └─img        图片目录

// 访问资源文件的URL路径
http://tp.com/static/css/style.css
http://tp.com/static/js/common.js
http://tp.com/static/img/picture.jpg

URL访问

单应用模式

// 域名/入口文件/控制器/方法名
http://www.tp.com/index.php/index/hello

多应用模式

// 域名/入口文件/应用/控制器/方法名
http://www.tp.com/index.php/index/index/hello

默认情况下,URL是不区分大小写的,那么就说不管是单应用模式的URL里的控制器/方法名或是多应用模式的URL里的应用/控制器/方法名都是会自动转换小写的

隐藏入口文件

出于优化的URL访问原则,还支持通过URL重写隐藏入口文件,下面以Apache为例说明隐藏应用入口文件index.php的设置

下面是Apache的配置过程,可以参考下:

  • httpd.conf配置文件中加载了mod_rewrite.so模块
  • AllowOverride NoneNone改为 All
  • 把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下
<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>
powered by GitbookEdit Time: 2023-04-08 10:28:32