站长推荐学习ThinkPHP6.0 入门必读
2023-01-04 加入收藏
ThinkPHP6.0
是基于现代主流开发思想而设计的全新架构版本,集简单、规范、优雅和性能于一身,是今后很长一段时间主要维护的版本。
在学习ThinkPHP6.0
之前,你必须要掌握的技能包括:
PHP7
基础知识:新版基于PHP7.1+
开发,运用了很多PHP7的新特性;composer
安装和使用:新版必须通过Composer
才能安装;运行环境安装:运行环境是一道学习的门槛;
面向对象编程(OOP)思想:思想入门比代码入门更为关键;
本书内容包含三个部分:
入门必读: 快速了解
6.0
的功能使用代码规范: 开发规范以及代码建议
常见问题: 新手的常见问题整理
6.0
主要新特性采用
PHP7
强类型(严格模式)支持更多的
PSR
规范多应用支持
ORM
组件独立改进的中间件机制
更强大和易用的查询
全新的事件系统
支持容器
invoke
回调模板引擎组件独立
内部功能中间件化
SESSION机制改进
缓存及日志支持多通道
引入
Filesystem
组件对
Swoole
以及协程支持改进对IDE更加友好
统一和精简大量用法
在主流框架里面,ThinkPHP
6.0
是最先采用PHP7严格模式的。但强类型本身也是一把双刃剑,如果不能很好驾驭,可能会非常被动,所以强烈建议新手首先去恶补下PHP7的强类型,以免被强类型弄得晕头转向的。
所有的核心文件都是开启了严格模式的类型约束,因此有任何的变量类型不符的情况都会抛出异常,有利于规范代码中的变量类型和提前发现问题隐患。我们也建议你的项目文件也同样开启严格模式,只需要在你的PHP文件开头增加下面一行代码。
declare (strict_types = 1);
更规范
规范两个字看起来很简单,实则有如打通任督二脉一般至关重要。由于采用了Composer依赖开发和功能组件化,核心的每个组件更易维护和更新,也更方便扩展和替换核心功能。每个组件和接口都提供了相应的规范,或者是遵守了某些规范,诸如PSR
之类。
对于数据库、日志、缓存及Session
等组件都提供了契约接口,很容易扩展。
此次精简和统一了原有版本某个功能的多种用法,使得团队开发制定规范的时候更容易和避免滥用。
规范的另外一层含义是不允许对框架指定的规则进行破坏,所以你会看到很多原本可以支持的新版里面不再进行支持了,一方面是这些功能都不再建议使用,另外一方面可能是禁止滥用而破坏规范和统一性。
更强大
虽然核心精简了,但不代表系统的功能减弱了,底层架构的设计其实是变复杂了,外表看起来越是易用的其实内部架构越是复杂,新版完全重新设计了框架的底层架构,考虑到了HTTP以及命令行,以及各种长连接及协程的支持,事实上由于中间件、系统服务和事件机制的引入,使核心功能变得更易扩展,很多原本内置的功能都已经改成中间件的方式即“插”即用,当不需要的时候可以很容易关闭而不会影响系统的性能。
通过注册服务可以让系统变得更灵活和易扩展。分层的中间件执行机制,让中间件变得更有层次,可以更好的确保中间件的执行优先次序。而事件的观察者和订阅机制,俨然就是一个项目解耦神器。
更易用
一个框架如果丧失了易用性这一前提,哪怕功能再强大也难成大器。新版尽量减少一些不必要的配置,并且改进了一些更为直观的配置定义。助手函数、IDE助手、注解扩展、调试工具、异常页面的诸多细节改善都体现了一个框架的易用性。
关于安装
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 tpphp think run
现在你可以开始你的TP6开发之旅了。
在浏览器里面输入
http://localhost:8000
就会看到熟悉的欢迎页面(并显示当前安装的版本号)
如果需要更改默认端口,可以使用
php think run -p 80
请确保端口没有被占用。
目录结构
默认安装后的目录结构如下:
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 命令行入口文件
本文仅搬运最基本的介绍,更详细的入门知识,我已经购买了文档,还在学习中,后期更新吧。