## 练习0:安装和准备 >[info] 任务:安装好ThinkPHP`5.1`,以及为后面的学习做一些准备。 安装ThinkPHP`5.1`之前,首先确认下你的PHP环境是`PHP5.6+`,由于PHP`5.6` 和`7.0` 只在大概1年内提供安全补丁更新,因此如果条件允许推荐使用`PHP7.1+`版本。   有很多新手经常会问一个问题,`ThinkPHP5`是否支持`PHP7`?注意看 ThinkPHP5 的安装环境写的是`PHP5.6+` 而不是`PHP5.6`,显然`PHP7`属于`PHP5.6+`吧,除非你是在问是否支持`PHP8.0`,我可能会回答不支持,因为我不知道`PHP8.0`长啥样,我怎么知道支不支持?言下之意,如果是当前框架版本发布的时候尚未发布的PHP版本,那么是否支持是不确定的。但目前可以肯定的是至少可以支持`PHP7.2`版本,无论是ThinkPHP`5.0`还是`5.1`。   安装`ThinkPHP5`很简单,前提是你首先已经安装`Composer`或者`Git`(这两个是PHP开发者必不可少的),推荐的方式是使用`Composer`安装,在`PHP`生态中,[Composer](https://getcomposer.org/) 是最先进的依赖管理方案,官方的很多扩展也都是基于`Composer`的(关于`Composer`使用的更多讨论参考后面的拓展讨论)。 打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令: ~~~ composer create-project topthink/think tp5 ~~~ 成功完成后切换到`tp5`目录下面,执行如下命令: ~~~ php think run ~~~ 会显示类似信息: ~~~cmd D:\www\tp5>php think run ThinkPHP Development server is started On <http://127.0.0.1:8000/> You can exit with `CTRL-C` Document root is: D:\www\tp5/public ~~~ 实际上运行了一个`PHP`内置的`web`服务器。 接下来,我们可以直接通过下面的地址访问: ~~~ http://127.0.0.1:8000 ~~~ 就会看到框架内置的欢迎页面。 ![](https://box.kancloud.cn/b8840a109089c97cf79c5e34b2b3a704_759x295.png) 至此,你的ThinkPHP安装已经顺利完成! >[info] 当然,内置服务器仅供简单的学习测试,最好还是安装一个WEB服务器进行开发测试。 关于如何安装`web`服务器,本书不做任何的描述,这是你学习PHP的基础必备。我们后面假设你的运行环境没有任何问题,并且能支持`PATH_INFO`。 >[danger] 注意,除非你能完全掌控并解决问题,否则不要更改任何目录和文件的名称和位置,容易导致不可预知的问题。 ### 准备工作 为了更方便后面的学习和实例,我们最好做好几项准备工作: #### 第一:搭建`WebServer`以及数据库环境 选择和准备好你用的顺手的`WebServer`,最好是配置好URL重写和支持`pathinfo`的(否则容易遇到一些不可预知的麻烦,我见到太多新手卡在这个环节)。如果你还没有的话,可以尝试下 [WampServer3.0](https://sourceforge.net/projects/wampserver/files/WampServer%203/WampServer%203.0.0/),是个用于`Windows`的`web`服务器,并且自带了数据库服务,支持切换不同的PHP版本。 >[danger] 如果你实在怕麻烦,可以使用PHP内置的WEB服务器,也可以胜任本书的学习过程。 #### 第二:创建学习用的虚拟主机`Vhost` 使用你的`WebServer`创建一个`tp5.com`虚拟主机,目录指向安装后的`tp5/public`目录(在本篇的拓展讨论部分,有一个使用`WampServer3`添加虚拟主机的说明供参考)。 >[danger] 请注意本书的所有例子都假设你的访问域名是`tp5.com`而不是`localhost`。如果你使用了其它的虚拟主机名称,请自行调整访问地址。 如果你暂时没有任何服务器环境,也可以直接使用PHP内置的web服务器来学习测试,不过记得在你的`hosts`文件中添加: ~~~ 127.0.0.1 tp5.com ~~~ 然后在`tp5`目录下面执行(下面的命令最好关闭你其它的`webServer`,否则可能会因为端口占用而不能成功启动) ~~~ php think run -H tp5.com -p 80 ~~~ > 记得把`php`可执行文件的路径加入系统搜索路径。 然后,你就可以直接访问 ~~~ http://tp5.com ~~~ 看到前面出现的欢迎页面了,你的ThinkPHP5学习之旅即将启程^_^ #### 第三:开启调试模式 `5.1`版本默认使用部署模式,在开发过程中建议统一开启应用的调试模式,找到`config/app.php`文件,修改设置`app_debug`参数: ~~~ // 开启调试模式 'app_debug' => true, ~~~ >[danger] 在你的应用真实部署上线后,务必确认关闭调试模式。 ## 拓展讨论 ### 设置`Vhost`访问 以`WampServer3.0`为例,说下如何添加`Vhost`,启动你的`WampServer`后,打开浏览器,访问: ~~~ http://localhost/ ~~~ 然后在页面的左下角找到 `Add a Virtual Host`点击 ![](https://box.kancloud.cn/8f07c143c6b161088b8be3c2b52c6482_607x223.png) 打开页面如图所示: ![](https://box.kancloud.cn/e215bc91769f9f13683bbe1f1bfb60c1_1033x566.png) 按照提示依次填写域名(你的Vhost地址,例如`tp5.com`)、对应WEB目录(注意`ThinkPHP5`的`web`目录应该设置为`tp5/public`而不是`tp5`)和对应解析IP(一般无需填写默认即可)。 提交后会显示 ![](https://box.kancloud.cn/ed5874ddcc8cb1627c61222c9741f1cb_1034x387.png) 在WampServer图标上点击右键选择`Tools->Restart DNS`。 ![](https://box.kancloud.cn/be46bb86e2c43d5953e0a85e1a4ffd93_920x661.png) 重启DNS之后,你就可以使用`tp5.com`来访问测试了。 >[danger] 如果你使用的是其它的WEB服务器或者其它系统,请自行百度完成`Vhost`的添加,以方便后面的测试。 ### `Composer`注意事项 >[info] `Composer`是PHP的依赖关系管理工具,对原有的开发模式和类库扩展机制是一种颠覆。原本你无论是下载还是`Git`获取,一般都只能手动更新,而无法做到对依赖类库的自动更新(虽然`Git`可以很方便更新,但仍然无法完成依赖更新),`Composer`提供了一种全新的安装和更新方式,目前主流框架和类库都已经支持`Composer`安装方式了,使用简单的命令行操作就可以安装和更新类库,支持`Linux`和`Windows`平台。 如果还不理解,对于新手来说可以简单理解为`Composer`是一种`PHP`开发趋势,同时是你`PHP`开发的“素材库”,你只需要简单的`composer require`就可以最大程度简化你的开发工作。 >[info] 人生苦短,我用 `Composer` > 关于`Composer`的几点使用提醒: >[danger] 如果你不是在国外的话,建议进行下面的全局设置使用[中国镜像](https://pkg.phpcomposer.com/ ),所有不愿意用`composer`的用户大部分是因为没有使用国内镜像。 ~~~ composer config -g repo.packagist composer https://packagist.phpcomposer.com ~~~ `Composer` 安装的时候注意版本号,有时候框架一直在更新,而你可能只需要安装特定版本的,那么可以指定版本号。 `composer`的安装目录一般不建议纳入你的应用`Git`版本库,`vendor`目录(或者你安装依赖的其它目录)都应该被添加进` .gitignore`,然后让所有开发人员使用`Composer`来安装依赖包。 如果你的依赖库有单独的内部版本库地址,你可以把`Composer`的源设置为本地的`GIT`版本库,在`composer.json`文件中添加: ~~~ "repositories": { "packagist": { "type": "svn", "url": "https://git.yourdomain.com" } } ~~~ 最后,附上几个`Composer`学习资源: * https://packagist.org/ Composer安装包列表 * http://www.phpcomposer.com 比较好用的中国镜像(已经废弃) * * http://docs.phpcomposer.com composer中文文档 希望还在犹豫的朋友早日拥抱`Composer`! ### 代码格式化 在你进行学习和开发的过程中,一定要养成代码格式化的习惯,不要觉得写出能运行的代码就行了,代码规范体现了一个从业者的素质,如果是团队开发,应该保持代码格式化的风格统一,基本上主流的IDE都可以支持代码格式化操作。 如果`PHPStorm`可以使用`Ctrl + Alt + L`进行格式化(设置代码样式:File -> Settings -> Code Style ->PHP),`VSCode`和`Sublime Text`推荐安装`phpfmt`插件。 > 笔者使用`Sublime Text 3`和`phpfmt`插件并设置了每次保存的时候自动进行代码格式化,本书中的所有代码都遵循统一的代码规范。