基本介绍
简介
ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,
自2006年诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,尤其注重开发体验和易用性,
并且拥有众多的原创功能和特性,为WEB应用和API开发提供了强有力的支持。
安装
- Composer安装
- Git安装
- 源码安装
Composer安装
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
然后在命令行下面,切换到你的web根目录下面并执行下面的命令:
composer create-project topthink/think=5.0.* tp5 --prefer-dist
Git安装
首先克隆下载应用项目仓库
git clone https://github.com/top-think/think tp5
然后切换到tp5目录下面,再克隆核心框架仓库:
git clone https://github.com/top-think/framework thinkphp
两个仓库克隆完成后,就完成了ThinkPHP5.0的Git方式下载,如果需要更新核心框架的时候,只需要切换到thinkphp核心目录下面,然后执行:
git pull https://github.com/top-think/framework
源码安装(离线安装)
直接下载rar压缩包放到php环境目录下
目录结构
project 应用部署目录
├─application 应用目录(可设置)
│ ├─common 公共模块目录(可更改)
│ ├─index 模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ ... 更多类库目录
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共(函数)文件
│ ├─config.php 应用(公共)配置文件
│ ├─database.php 数据库配置文件
│ ├─tags.php 应用行为扩展定义文件
│ └─route.php 路由配置文件
├─extend 扩展类库目录(可定义)
├─public WEB 部署目录(对外访问目录)
│ ├─static 静态资源存放目录(css,js,image)
│ ├─index.php 应用入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于 apache 的重写
├─runtime 应用的运行时目录(可写,可设置)
├─vendor 第三方类库目录(Composer)
├─thinkphp 框架系统目录
│ ├─lang 语言包目录
│ ├─library 框架核心类库目录
│ │ ├─think Think 类库包目录
│ │ └─traits 系统 Traits 目录
│ ├─tpl 系统模板目录
│ ├─.htaccess 用于 apache 的重写
│ ├─.travis.yml CI 定义文件
│ ├─base.php 基础定义文件
│ ├─composer.json composer 定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 惯例配置文件
│ ├─helper.php 助手函数文件(可选)
│ ├─LICENSE.txt 授权说明文件
│ ├─phpunit.xml 单元测试配置文件
│ ├─README.md README 文件
│ └─start.php 框架引导文件
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
入口文件
ThinkPHP5.0版本的默认自带的入口文件位于public/index.php
实际部署的时候public目录为你的应用对外访问目录
浏览器访问路径为:http://localhost/tp5/public/
静态资源访问
网站的资源文件访问不会影响正常的操作访问,只有当访问的资源文件不存在的时候才会解析到入口文件,一般就会提示模块不存在的错误。
网站的资源文件一般放入public目录的子目录下面,例如下面是一个建议规范:
public
├─index.php 应用入口文件
├─static 静态资源目录
│ ├─css 样式目录
│ ├─js 脚本目录
│ └─img 图像目录
记住,千万不要在public
目录之外的任何位置放置资源文件,包括application
目录。
访问资源文件的URL路径是:
http://tp5.com/static/css/style.css
http://tp5.com/static/js/common.js
http://tp5.com/static/img/picture.jpg
如果你没有设置域名绑定,而是使用子目录方式访问的话,那么可能的资源访问地址是:
http://localhost/public/static/css/style.css
http://localhost/public/static/js/common.js
http://localhost/public/static/img/picture.jpg
静态常量
在模板中可以使用__STATIC__
来输出项目目录但是在路径中缺少public目录,可以在配置文件中自定义静态常量
// 视图输出字符串内容替换
'view_replace_str' => [
'__STATIC__' => '/static',
'__CSS__' => '/static/css',
'__JS__' => '/static/js',
'__IMG__' => '/static/images',
]
加载资源格式:
<linkhref="__CSS__/style.css"rel="stylesheet">
<script src="__JS__/style.js"></script>
<img src="__IMG__/user_logo.jpg" />
调试模式
ThinkPHP支持调试模式,默认情况下是开启状态(5.0.10+版本开始,默认关闭调试模式,需要自己开启)。调试模式以除错方便优先,而且在异常的时候可以显示尽可能多的信息,所以对性能有一定的影响。
修改应用配置文件(application/config.php)中的app_debug配置参数:
// 关闭调试模式
'app_debug' => false,
为了安全考虑,避免泄露你的服务器WEB目录信息等资料,一定记得正式部署的时候关闭调试模式
URL访问
默认情况下,URL是不区分大小写的,也就是说 URL里面的模块/控制器/操作名会自动转换为小写,控制器在最后调用的时候会转换为驼峰法处理。
http://localhost/index.php/Index/Blog/read
// 和下面的访问是等效的
http://localhost/index.php/index/blog/read
如果访问下面的地址
http://localhost/index.php/Index/BlogTest/read
// 和下面的访问是等效的
http://localhost/index.php/index/blogtest/read
在这种URL不区分大小写情况下,如果要访问驼峰法的控制器类,则需要使用:
http://localhost/index.php/Index/blog_test/read
如果希望URL访问严格区分大小写,可以在应用配置文件中设置:
// 关闭URL中控制器和操作名的自动转换
'url_convert' => false,
隐藏入口文件
在ThinkPHP5.0中,出于优化的URL访问原则,还支持通过URL重写隐藏入口文件,下面以Apache为例说明隐藏应用入口文件index.php的设置。
下面是Apache的配置过程,可以参考下:
- httpd.conf配置文件中加载了mod_rewrite.so模块
- AllowOverride None 将None改为 All
- 在应用入口文件同级目录添加.htaccess文件,内容如下:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
配置信息
文件路径:tp5/application/config
//项目配置文件
return [
// 默认模块名
'default_module' => 'index',
// 默认控制器名
'default_controller' => 'Index',
// 默认操作名
'default_action' => 'index',
//更多配置参数
//...
];
读取配置
//先引入config 配置类
use think\Config;
//读取config 配置
Config::get('配置名称');
//或者你需要判断是否存在某个设置参数
Config::has('配置参数2');
//设置配置参数
Config::set('配置参数','配置值');
// 或者使用助手函数
config('配置参数','配置值');
//也可以批量设置,例如:
Config::set([
'配置参数1'=>'配置值',
'配置参数2'=>'配置值'
]);
// 或者使用助手函数
config([
'配置参数1'=>'配置值',
'配置参数2'=>'配置值'
]);
数据库配置
文件路径:tp5/application/database.php
/* 数据库设置 */
'database' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'thinkphp',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
// 数据库调试模式
'debug' => false,
],