如下内容大部分来源于TP6彻底开发手册,以手册为主附上我的理解,仅做学习使用.php
第一篇学习笔记,主要记录TP6的基础,包括TP6简介,安装,Hello World,目录结构,配置等.html
TP是一个免费的开源的,快速的,简单的面向对象的轻量级的PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的.TP遵循Apache2开源许可协议发布,意味着能够无偿使用TP,甚至容许基于TP开发的应用开源或商业产品发布/销售.linux
在安装TP6以前,须要先安装:git
Composer是PHP5.3以上用来管理依赖关系的工具,能够在本身的项目中声明所依赖的外部工具库,Composer会安装这些依赖的库文件.thinkphp
Linux/Mac:数据库
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
Windows:戳这里.
笔者的是win环境,以win为例:首先用上面的连接下载Composer-Setup.exe.
选择php.exe的位置.
这里笔者遇到的问题是firebird与oci这两个模块缺失的问题,解决方法戳这里.
.
好了以后会修改php.ini的默认配置,原来的会备份,next修改便可.
下一步是代理设置,不须要的直接next.
而后说提示Failed to decode zlib stream.
(若是没遇到这种问题直接使用exe安装成功的能够略过下面)
其实linux下这种问题是很容易解决的,编译安装zlib就是了,可是win下就有点麻烦了.因而搜了如下zlib在win下的安装方法,须要使用VS,下面是Github上的zlib资源:
可能这真的是一个"wrong place"...
好吧不废话了,笔者平时不须要用VS,为了一个zlib去下一个VS这怎么看也不划算.找了一下其余的安装方法,使用另外一个文档安装(戳这里):
而后终于成功了:
json
官方建议使用国内的阿里云镜像:数组
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer
这是一种全局的修改配置文件的方式,还能够修改当前项目的配置文件,进入项目的根目录(composer.json所在的目录),执行:浏览器
composer config repo.packagist composer https://mirrors.aliyun.com/composer
其实相比起全局就是少了一个-g.
上面的命令会在当前项目中的composer.json末尾添加镜像配置信息(固然能够直接手动添加):缓存
"repositories": { "packagist": { "type":"composer", "url":"https://packagist.phpcomposer.com" } }
cd切换到项目目录,
cd project composer create-project topthink/think tp6
其中tp6就是应用根目录,能够随意修改.
若是以前已经安装过,能够切换到项目目录,使用如下命令更新:
composer update topthink/framework
(会删除thinkphp目录从新安装新版本)
一样切换到项目目录:
cd project composer create-project topthink/think=6.0.x-dev tp6
这里笔者用的是开发版,可是出现openssl错误:
在php.ini中把openssl扩展开启就好了.
而后会多一个叫tp6的文件夹.
默认是部署模式,开发阶段能够修改APP_DEBUG开启调试模式.使用create-project安装的tp6默认会带一个.example.env的文件,默认已开启调试模式:
php think run
提示:
浏览器输入:
http://localhost:8000
默认用的是8000端口,可使用-p指定端口,好比80端口:
php think run -p 80
而后使用
http://localhost
访问.
PHP支持多应用部署,实际目录结构取决于单应用仍是多应用模式.
默认安装后的目录结构是单应用模式.多应用模式与单应用模式的主要不一样就是app目录,多应用模式下面有多个应用目录,而单应用模式默认只有一个controller,并且官方建议多应用模式的话把controller删除,系统会根据该目录做为判断是不是单应用的依据.
相对于TP5.1,TP6的主要变化是核心框架归入vendor,原来的application变为app目录.
这里以单应用模式进行目录结构的说明,项目目录下(这个例子是上面安装的tp6目录)有8个子目录:app,config,extend,public,route,runtime,vendor,view.
app是应用目录,包含一个controller控制器目录(默认有一个Index.php)与如下php文件:
除此以外还有一个叫.htaccess的文件,这个也叫分布式配置文件,全称是Hypertext Access,提供了针对目录改变配置的方法,即在一个特定的文档目录放置一个包含一个或多个指令的文件,以做用于此目录及其全部子目录.
.htacess是Apache服务器的一个配置文件,负责相关目录下的网页配置,经过.htaccess能够实现网页301重定向,自定义404错误页面等功能.默认是
deny from all
无条件禁止访问.
config是配置目录,包含如下php文件:
扩展类库目录,默认只有一个.gitignore.
对外访问目录,默认包含:
路由定义目录,默认包含一个app.php,路由定义文件.
应用的运行时目录,默认只有.gitignore.
Composer类库目录,包含
视图目录,若是不适用视图能够删除该目录.
单应用模式的根目录下的config目录就是全部配置文件,里面的文件会被自动读取,若是存在子目录能够经过Config的load方法手动加载,如:
//加载config/extra/config.php,读取到extra. \think\facade\Config::load('extra/config','extra');
多应用配置的话根目录下的config就是全局配置文件,而每一个应用的配置文件在对应的应用目录下的config中,相同的参数会覆盖全局配置.
|--app | |--app1 | | |--config(应用配置) | | | |--xxxconfig.php | | | |... | |--app2 | | |--config(应用配置) | | | |--xxxconfig.php | | | |... |--config(全局配置) | |--xxxconfig.php
官方建议,除了一级配置外,配置参数的名字建议使用小写,如下配置只能在环境变量中修改:
app_debug | 描述 |
---|---|
app_debug | 应用调试模式 |
config_ext | 配置文件后缀 |
开发过程当中的.env文件(默认为.example.env)能够模拟环境变量配置,采用ini格式.
若是部署环境中单独使用配置了环境变量(前缀PHP_),须要删除.env配置文件避免冲突.
获取环境变量须要先引入think\facde\Env,而后使用:
Env::get('xxx');
获取.环境变量获取不区分大小写,支持默认值.
使用Config类须要先引入:
use think\facade\Config
用如下方法读取一级配置:
Config::get('app');
读取单个配置参数:
Config::get('app.app_name');
判断是否存在某个设置参数:
Config::has('template');
设置参数:
Config::set(['name1'=>'value1','name2'=>'value2'],'config');
Yaconf是一个高性能的配置管理扩展,在PHP启动时处理全部要处理的配置,全部配置的内容都是immutable的,支持丰富的配置类型,包括字符串,数组,分节,分节继承,而且能够在配置中直接写PHP常量与环境变量等.
TP中使用的Yaconf不支持动态设置,使用前须要先安装think-yaconf扩展,安装以后再也不区分全局与应用配置.
安装think-yaconf扩展:
composer require topthink/think-yaconf
在app下的provider.php添加:
'think\Config' => '\think\Yaconf'
而后使用setYaconf指定Yaconf使用的独立配置文件,如:
think\facade\Config::setYaconf('thinkphp');
设置后只须要在thinkphp.ini一个文件进行项目的配置.
更多Yaconf用法戳这里.
若是以为文章好看,欢迎点赞.
同时欢迎关注微信公众号:氷泠之路.