php空间怎么安装版本,ThinkPHP5.2安装及入口文件

### 2018 年 12 月 5 日 发布

## 引言

ThinkPHP`5.2`发布测试版本以来,越来越多的的用户开始关注(让人惊奇的是居然有用户已经开始用于项目,实在是勇气可嘉^_^),并希望能有官方手册,但很遗憾的是,在正式版本尚未发布之前,官方暂时不会出开发手册。主要原因是正式发布之前,仍然有变化的可能,手册存在不确定因素,也不希望误导大家引起误会,另外一方面,确实是因为忙(带娃模式),最近连《[笨办法学ThinkPHP5.1](https://www.kancloud.cn/thinkphp/thinkphp-the-hard-way)》还一直搁浅着呢,实在是抱歉。

不过,也说过会写一些简单的教程先,让那些热衷于测试新版本的用户有机会学习和体验。因此,现在开始我会陆续更新一些`5.2`的使用教程,主要是讲述一些区别之处,避免雷区。

希望通过本系列教程抛砖引玉,开启`5.2`的学习之门,不排除可能由于后续版本的调整而产生变化,有兴趣的开发者可以参与新版文档教程的写作贡献,官方会择优收录到[ThinkPHP开发者周刊](https://www.kancloud.cn/thinkphp/weekly/content)中。

>[danger] 再次强调,`5.2`版本目前属于测试版本,存在不稳定性,请勿轻易用于正式项目。

## 安装

由于`5.2`版本完全依赖`Composer`,因此只能通过`composer`安装才能使用,不同于`5.0`和`5.1`版本,下载或者`Git`安装都可以使用。

由于只是测试阶段,所以必须安装`dev`版本

```

composer create-project topthink/think tp520 5.2.*-dev

```

启动服务

```

cd tp520

php think run

```

## 入口文件

新版的入口文件还是位于`public`目录下面,由于直接使用`composer`的自动加载机制,因此框架核心已经不再使用`Loader`类了而是改为加载`composer`的`autoload`文件。

秉承`ThinkPHP`大道至简的原则,入口文件依然非常之简单:

```

namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 执行应用并响应

(new App())->run()->send();

```

注意每一个入口文件在新版里面总是对应一个应用,有意思的是,不同的应用入口文件除了文件名不同外代码可能完全一样(会自动绑定到文件名对应的应用)。

如果你的文件名和应用名不一致,那么可能需要略微调整如下:

```

namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 执行应用并响应

(new App())->name('app_name')

->run()

->send();

```

`think\App`类还提供了很多的设置方法,都可以在`run`之前调用。这个有兴趣深入了解的可以通过源码查看。

由于新版本一个入口文件对应一个应用,如果你希望保持`5.1`版本的URL形式不变,直接访问不同的应用,一个最简单的办法就是设置`Apache`的`.htaccess`文件。

```

Options +FollowSymlinks -Multiviews

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([a-z]+)/(.*)$ $1.php/$2 [QSA,PT,L]

```

其它的WEB服务器环境可以参考修改。

## 应用目录及命名空间调整

新版的目录结构其实看起来和`5.1`并无多大的差异,除了`thinkphp`框架目录已经纳入`vendor`之外。另外应用目录从原来的`application`更改为`app`,之所以做这个调整是为了让新手更容易理解应用的命名空间对应,不至于产生不必要的困惑。

但其实有一个本质的改变就是新版不再支持多模块,而改为原生多应用支持。因此你原来的模块目录可能在新版就变成了应用目录,为了让升级工作更简单,新版的应用命名空间和多模块保持一致。

应用命名空间类似于

```

\app\admin\controller

\app\admin\model

```

如果你需要更改根命名空间为`top`,有两种办法。一种是修改`composer.json`文件的`autoload`,这样可以不改变目录名。

```

"psr-4": {

"top\\": "app"

},

```

第二种办法是直接修改你的`app`目录为`top`。

无论使用哪一种方法,最后在入口文件中设置根命名空间名称。

```

namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 执行应用并响应

(new App())->setRootNamespace('top')

->run()

->send();

```

如果你的`admin`应用不在`app`目录下面,有完全独立的命名空间例如

```

\think\admin

```

就可以在入口文件`admin.php`中进行指定

```

namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 设置当前应用的命名空间

(new App())->setNamespace('\think\admin')

->run()

->send();

```

这个应用放在什么位置取决于你的命名空间自动加载路径,这一设计让你的应用可以通过`composer`来加载。

## 多应用模式

多应用模式下面,除了应用目录的区别外,`runtime`目录下面会自动创建各个应用的子目录(注意,这个目录同样适用于`composer`加载的应用),但你只需要通过`App::getRuntimePath()`方法获取当前应用的`runtime`目录。

```

runtime/home/

runtime/admin/

```

多个应用的路由定义文件都是独立的,在`route`目录下面创建对应目录的子目录存放每个应用的路由定义。

```

route/home/

route/admin/

```

多个应用允许加载统一的公共文件。

```

app/common.php

app/admin/common.php

app/home/common.php

```

对于配置文件而言,`config`目录下为应用公共配置,`config`下子目录则为单个应用的独立配置。

```

config/

config/admin/

config/home/

```

可能有人认为现在不同的应用是独立的入口文件,每个应用之间没法互通了,其实这个理解是错误的。不同的应用仍然是可以相互调用的,毕竟类库都是基于命名空间的。

## 单应用模式

上面的目录结构其实是多应用设计,和之前版本一样同样支持单应用模式(之前版本其实是单一模块模式)如果你使用的是单应用的话,目录结构其实就变成了下面的结构。

```

www

├─app 应用目录

│ ├─controller 控制器目录

│ ├─model 模型目录

│ ├─view 视图目录

│ └─ ... 更多类库目录

```

系统的一个默认判断单应用的规则是`app`目录下面如果存在`controller`目录,则判断当前为单应用模式。如果你更改了默认的访问控制器层的名称(或者刚好有一个应用名称也叫`controller`),那么可以在入口文件里面调用 `multi(false)`来设置为单应用模式。

```

namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 执行应用并响应

(new App())->multi(false)

->run()

->send();

```

单应用模式下,如果需要更改命名空间,`setNamespace`和`setRootNamespace`方法是等效的。

## 小结

本篇我们基本了解了`5.2`的目录结构和入口文件的用法,并掌握了多应用模式和单应用模式的区别及使用。下一篇,我会给大家讲下数据库和模型和之前版本的区别。

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用 开发和简化企业级应用开发而诞生的。拥有众多的优秀功能和特性,经历了三年多发展的同时,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和 改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。 ThinkPHP借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,采用单一入口模式等,融合了Struts的 Action思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封了CURD和一些常用操作,在项目配置、类 库导入、模版引擎、查询语言、自动验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有独特的 表现。 使用ThinkPHP,你可以更方便和快捷的开发和部署应用。当然不仅仅是企业级应用,任何PHP应用开发都可以从ThinkPHP的简单 和快速的特性中受益。ThinkPHP本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB应 用开发更简单、更快速。为此ThinkPHP会不断吸收和融入更好的技术以保证其新鲜和活力,提供WEB应用开发的最佳实践! ThinkPHP遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产 品发布/销售。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值