热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TP6学习笔记一:安装与基本配置

1说明与概述1.1说明以下内容大部分来源于TP6完全开发手册,以手册为主附上个人理解,仅作学习使用.1.2概述第一篇学习笔记,主要记录TP6的基础,包括TP6简介,安装,Hello
1 说明与概述

1.1 说明

以下内容大部分来源于TP6完全开发手册,以手册为主附上个人理解,仅作学习使用.

1.2 概述

第一篇学习笔记,主要记录TP6的基础,包括TP6简介,安装,Hello World,目录结构,配置等.

2 TP6

TP是一个免费的开源的,快速的,简单的面向对象的轻量级的PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的.TP遵循Apache2开源许可协议发布,意味着可以免费使用TP,甚至允许基于TP开发的应用开源或商业产品发布/销售.

3 TP6主要新特性
  • 采用PHP7强类型(严格模式)
  • 支持更多PSR规范
  • 多应用支持
  • ORM组件独立
  • 改进的中间件机制
  • 更强大和易用的查询
  • 全新的事件系统
  • 支持容器invoke回调
  • 模板引擎组件独立
  • 内部功能中间优化
  • SESSION机制改进
  • 缓存及日志支持多通道
  • 引入Filesystem组件
  • 对Swoole以及协程支持改进
  • 对IDE更加友好
  • 统一和精简大量用法
4 安装

4.1 安装要求

在安装TP6之前,需要先安装:

  • PHP ( >= 7.1.0)
  • Composer

4.2 Composer

4.2.1 Composer简介

Composer是PHP5.3以上用来管理依赖关系的工具,可以在自己的项目中声明所依赖的外部工具库,Composer会安装这些依赖的库文件.

4.2.2 Composer安装

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这怎么看也不划算.找了一下其他的安装方法,使用另一个文档安装(戳这里):

在这里插入图片描述

在这里插入图片描述

然后终于成功了:

在这里插入图片描述

4.2.3 (可选)换镜像

官方建议使用国内的阿里云镜像:

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"
	}
}

4.2.4 安装TP6稳定版

cd切换到项目目录,

cd project
composer create-project topthink/think tp6

其中tp6就是应用根目录,可以随意修改.

如果之前已经安装过,可以切换到项目目录,使用以下命令更新:

composer update topthink/framework

(会删除thinkphp目录重新安装新版本)

4.2.5 安装TP6开发版

同样切换到项目目录:

cd project
composer create-project topthink/think=6.0.x-dev tp6

这里笔者用的是开发版,但是出现openssl错误:

在这里插入图片描述

在php.ini中把openssl扩展开启就行了.

然后会多一个叫tp6的文件夹.

在这里插入图片描述

4.2.6 调试模式

默认是部署模式,开发阶段可以修改APP_DEBUG开启调试模式.使用create-project安装的tp6默认会带一个.example.env的文件,默认已开启调试模式:

在这里插入图片描述

4.2.7 测试

php think run

提示:

在这里插入图片描述

浏览器输入:

http://localhost:8000

在这里插入图片描述

默认用的是8000端口,可以使用-p指定端口,比如80端口:

php think run -p 80

然后使用

http://localhost

访问.

5 规范

PHP PSR规范官网.

中文翻译.

在这里插入图片描述

至于这个....

6 单应用模式与多应用模式

PHP支持多应用部署,实际目录结构取决于单应用还是多应用模式.

默认安装后的目录结构是单应用模式.多应用模式与单应用模式的主要不同就是app目录,多应用模式下面有多个应用目录,而单应用模式默认只有一个controller,而且官方建议多应用模式的话把controller删除,系统会根据该目录作为判断是否是单应用的依据.

7 目录结构

相对于TP5.1,TP6的主要变化是核心框架纳入vendor,原来的application变为app目录.

这里以单应用模式进行目录结构的说明,项目目录下(这个例子是上面安装的tp6目录)有8个子目录:app,config,extend,public,route,runtime,vendor,view.

7.1 app

app是应用目录,包含一个controller控制器目录(默认有一个Index.php)与以下php文件:

  • AppService.php:应用服务类,包含服务注册与服务启动两个方法.
  • BaseController.php:控制器基础类,包含验证初始化方法.
  • common.php:应用公共文件,默认为空.
  • event.php:事件定义文件.
  • ExceptionHandle.php:应用异常处理类.包括记录与渲染方法.
  • middleware.php:全局中间件定义文件,默认返回空.
  • provider.php:容器provider定义文件.
  • Request.php:应用请求对象类,继承于thinkRequest.
  • service.php:系统服务定义文件,服务在完成全局初始化之后执行.

除此之外还有一个叫.htaccess的文件,这个也叫分布式配置文件,全称是Hypertext Access,提供了针对目录改变配置的方法,即在一个特定的文档目录放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录.

.htacess是Apache服务器的一个配置文件,负责相关目录下的网页配置,通过.htaccess可以实现网页301重定向,自定义404错误页面等功能.默认是

deny from all

无条件禁止访问.

7.2 config

config是配置目录,包含以下php文件:

  • app.php:应用配置文件,包含应用地址,应用命名空间,是否开启路由,默认应用,默认时区,应用映射,域名绑定,禁止RUL访问的应用列表,异常页面的模板文件,错误显示信息,显示错误信息等配置.
  • cache.php:缓存设置,包括默认缓存驱动,驱动方式,缓存保存目录,缓存前缀,缓存有效期,缓存标签前缀,序列化机制等配置.
  • console.php:控制台配置,默认包含指令定义的配置.
  • COOKIE.php:COOKIE配置,包括保存时间,保存路径,有效域名,是否启用安全传输,是否使用setCOOKIE,httponly等配置.
  • database.php:数据库配置,包含数据库连接(包括类型,地址,库名,用户名,密码,连接参数,默认编码,表前缀,部署方式:0代表集中式,1代表分布式,是否开启读写分离,读写分离后的主服务器数量,指定的从服务器序号,是否严格检查字段存在,是否断线重连,监听SQL,开启字段缓存,字段缓存路径),时间查询规则,自动写入时间戳字段,时间字段取出后的默认格式等配置.
  • filesystem.php:文件系统配置,包含默认磁盘,磁盘列表,磁盘类型,磁盘路径,磁盘路径对应的外部URL路径,可见性等配置.
  • lang.php:多语言配置,包括默认语言,允许的语言列表,多语言自动侦测变量名,是否使用COOKIE,多语言COOKIE变量,扩展语言包,Accept-Language转义为对应的语言包名称,是否支持语言分组等配置.
  • log.php:日志配置,包括默认日志记录通道(包括日志记录方式,保存目录,单文件日志写入,独立日志级别,最大日志文件数量,使用JSON格式记录,日志处理器,是否关闭通道日志写入,日式出书格式化格式,是否实时写入),日志记录级别,日志类型记录通道,是否关闭全局日志写入,全局日志处理器等配置.
  • middleware.php:中间件配置.
  • route.php:路由配置,包括pathinfo分隔符,URL伪静态后缀,URL普通方式参数,是否开启 路由延迟解析,是否强制使用路由,合并路由规则,路由是否完全匹配,访问控制器层名称,空控制器名,是否使用控制器后缀,是否开启请求缓存,请求缓存有效期,全局请求缓存排除规则,默认控制器名,默认操作名,操作方法后缀,默认JSONP格式返回处理方法,默认JSONP处理方法等配置.
  • session.php:会话配置,包括会话名称,会话ID,驱动方式,存储连接标识,过期时间,前缀等配置.
  • trace.php:Trace配置,开启调试模式后有效.
  • view.php:模板配置,包括模板引擎类型,默认模板渲染规则,模板目录名,模板后缀,模板文件名分隔符,模板引擎普通标签开始/结束标识,标签库标签开始/结束标记等配置.

7.3 extend

扩展类库目录,默认只有一个.gitignore.

7.4 public

对外访问目录,默认包含:

  • static文件夹:静态资源文件夹,默认带一个.gitignore.
  • .htaccess:Apache配置文件,用于Apache的重写.
  • favicon.ico:标签图标.
  • index.php:入口文件.
  • robots.txt:一个遵循Robots协议(也叫爬虫协议,机器人协议等,全称为网络爬虫排除标准)的txt,是搜索引擎中访问网站时要查看的第一个文件,告诉蜘蛛程序在服务器上什么文件是可以被查看的.默认的配置表示所有的搜索引擎可以查看,禁止列表为空.
  • router.php:快速测试文件.

7.5 route

路由定义目录,默认包含一个app.php,路由定义文件.

7.6 runtime

应用的运行时目录,默认只有.gitignore.

7.7 vendor

Composer类库目录,包含

  • bin:包含一个叫var-dump-server的脚本与一个叫var-dump-server.bat批处理文件,是Laravel5.7的新特性,引入Laravel Dump Server扩展包.
  • composer:包含一些自动加载的php文件(autoload_classmap.php,autoload_files.php,autoload_namespaces.php,autoload_psr4.php,autoload_real.php,autoload_static.php)与一个类加载器ClassLoader.php,还有一个installed.json,包含一些安装信息.
  • league:Laravel基于Frank de Jonge开发的PHP包Flysystem,提供了强大的文件系统抽象层处理,Laravel集成Flysystem以便使用不同的驱动简化对文件系统的操作.
  • opis:闭包处理相关.
  • psr:PHP规范处理,包括PSR缓存,PSR简单缓存,PSR容器以及PSR日志.
  • symfony:基于MVC架构的PHP框架Symfony.
  • topthink:TP框架,包括四个子文件夹:framework,think-helper,think-orm,think-trace.framework是TP6框架核心,think-helper是TP6常用的一些扩展类库,think-orm是基于PHP7.1+和PDO实现的ORM,支持多数据库,think-trace是TP6页面Trace扩展,支持Html页面和浏览器控制台两种方式输出.
  • autoload.php:Composer生成的自动加载文件.
  • services.php:安装TP自动生成的文件,默认返回一个长度为1的数组.

7.8 view

视图目录,如果不适用视图可以删除该目录.

8 配置

8.1 单应用配置

单应用模式的根目录下的config目录就是所有配置文件,里面的文件会被自动读取,如果存在子目录可以通过Config的load方法手动加载,如:

//加载config/extra/config.php,读取到extra.
	hinkfacadeConfig::load("extra/config","extra");

8.2 多应用配置

多应用配置的话根目录下的config就是全局配置文件,而每个应用的配置文件在对应的应用目录下的config中,相同的参数会覆盖全局配置.

|--app
|  |--app1
|  |  |--config(应用配置)
|  |  |  |--xxxconfig.php
|  |  |  |...
|  |--app2
|  |  |--config(应用配置)
|  |  |  |--xxxconfig.php
|  |  |  |...
|--config(全局配置)
|  |--xxxconfig.php

8.3 环境变量

官方建议,除了一级配置外,配置参数的名字建议使用小写,以下配置只能在环境变量中修改: |app_debug|描述| |-|-| |app_debug|应用调试模式| |config_ext|配置文件后缀|

开发过程中的.env文件(默认为.example.env)可以模拟环境变量配置,采用ini格式.

如果部署环境中单独使用配置了环境变量(前缀PHP_),需要删除.env配置文件避免冲突.

获取环境变量需要先引入thinkfacdeEnv,然后使用:

Env::get("xxx");

获取.环境变量获取不区分大小写,支持默认值.

8.4 Config类

使用Config类需要先引入:

use thinkfacadeConfig

用以下方法读取一级配置:

Config::get("app");

读取单个配置参数:

Config::get("app.app_name");

判断是否存在某个设置参数:

Config::has("template");

设置参数:

Config::set(["name1"=>"value1","name2"=>"value2"],"config");

8.5 使用Yaconf进行配置处理

8.5.1 Yaconf介绍

Yaconf是一个高性能的配置管理扩展,在PHP启动时处理所有要处理的配置,所有配置的内容都是immutable的,支持丰富的配置类型,包括字符串,数组,分节,分节继承,并且可以在配置中直接写PHP常量与环境变量等.

8.5.2 使用

TP中使用的Yaconf不支持动态设置,使用前需要先安装think-yaconf扩展,安装之后不再区分全局与应用配置.

安装think-yaconf扩展:

composer require topthink/think-yaconf

在app下的provider.php添加:

"thinkConfig" => "	hinkYaconf"

然后使用setYaconf指定Yaconf使用的独立配置文件,如:

thinkfacadeConfig::setYaconf("thinkphp");

设置后只需要在thinkphp.ini一个文件进行项目的配置.

更多Yaconf用法戳这里.


推荐阅读
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了sqlserver云存储和本地存储的区别,云存储是将数据存储在网络上,方便查看和调用;本地存储是将数据存储在电脑磁盘上,只能在存储的电脑上查看。同时提供了几种启动sqlserver的方法。此外,还介绍了如何导出数据库的步骤和工具。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 如何通过swoole加速laravel的问题?
    这篇文章主要介绍了关于如何使用swoole加速laravel,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下再来复习一下吧,导致php慢的各种因素中解析性语言的 ... [详细]
  • windows下composer命令无效的解决办法
    开发工具|composerwindows,composer开发工具-composer下面由composer教学栏目给大家介绍windows下composer安装不了或compose ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了未找到类'MaddHatterLaravelFullcalendarServiceProvider'相关的知识,希望对你 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
author-avatar
落叶听声
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有