php5.1 facade,ThinkPHPV5.1 这个版本是个坑,如需使用请注意以下几个问题

ThinkPHP5.1对底层架构做了进一步的改进,减少依赖,其主要特性包括:

+ 引入容器和Facade支持

+ 依赖注入完善

+ 对象化的路由

+ 配置和路由目录独立

+ 取消系统常量

+ 助手函数增强

+ 类库别名机制

+ 模型和数据库增强

+ 支持PSR-3日志规范

废除的功能:

+ 聚合模型

+ 内置控制器扩展类

ThinkPHP5的运行环境要求PHP5.6以上。

目录结构

初始的目录结构如下:

www WEB部署目录(或者子目录)

├─application 应用目录

│ ├─common 公共模块目录(可以更改)

│ ├─module_name 模块目录

│ │ ├─common.php 模块函数文件

│ │ ├─controller 控制器目录

│ │ ├─model 模型目录

│ │ ├─view 视图目录

│ │ └─ … 更多类库目录

│ │

│ ├─command.php 命令行定义文件

│ ├─common.php 公共函数文件

│ └─tags.php 应用行为扩展定义文件

├─config 应用配置目录

│ ├─module_name 模块配置目录

│ │ ├─database.php 数据库配置

│ │ ├─cache 缓存配置

│ │ └─ …

│ │

│ ├─app.php 应用配置

│ ├─cache.php 缓存配置

│ ├─cookie.php Cookie配置

│ ├─database.php 数据库配置

│ ├─log.php 日志配置

│ ├─session.php Session配置

│ ├─template.php 模板引擎配置

│ └─trace.php Trace配置

├─route 路由定义目录

│ ├─route.php 路由定义

│ └─… 更多

├─public WEB目录(对外访问目录)

│ ├─index.php 入口文件

│ ├─router.php 快速测试文件

│ └─.htaccess 用于apache的重写

├─thinkphp 框架系统目录

│ ├─lang 语言文件目录

│ ├─library 框架类库目录

│ │ ├─think Think类库包目录

│ │ └─traits 系统Trait目录

│ │

│ ├─tpl 系统模板目录

│ ├─base.php 基础定义文件

│ ├─console.php 控制台入口文件

│ ├─convention.php 框架惯例配置文件

│ ├─helper.php 助手函数文件

│ ├─phpunit.xml phpunit配置文件

│ └─start.php 框架入口文件

├─extend 扩展类库目录

├─runtime 应用的运行时目录(可写,可定制)

├─vendor 第三方类库目录(Composer依赖库)

├─build.php 自动生成定义文件(参考)

├─composer.json composer 定义文件

├─LICENSE.txt 授权说明文件

├─README.md README 文件

├─think 命令行入口文件

目录结构的主要变化是配置目录和路由定义目录独立出来,不再放入应用类库目录。

升级指导

1、命名空间调整

如果你自定义了应用类库的命名空间,需要改为设置环境变量`app_namespace`而不是应用配置文件。

如果你的应用类库中使用了下面的系统类库(主要涉及的类库是5.0静态调用的系统类库),那么命名空间需要调整如下:

|5.0系统|5.1系统|

|—|—|

|think\App|think\facade\App(或者App)|

|think\Cache|think\facade\Cache(或者Cache)|

|think\Config|think\facade\Config(或者Config)|

|think\Cookie|think\facade\Cookie(或者Cookie)|

|think\Debug|think\facade\Debug(或者Debug)|

|think\Env|think\facade\Env(或者Env)|

|think\Hook|think\facade\Hook(或者Hook)|

|think\Lang|think\facade\Lang(或者Lang)|

|think\Log|think\facade\Log(或者Log)|

|think\Request|think\facade\Request(或者Request)|

|think\Response|think\facade\Reponse(或者Reponse)|

|think\Route|think\facade\Route(或者Route)|

|think\Session|think\facade\Session(或者Session)|

|think\Url|think\facade\Url(或者Url)|

|think\View|think\facade\View(或者View)|

举个例子,如果应用类库开头`use`了 `think\Url`

usethink\Url;

Url::build(‘index/index’);

则需要改成

usethink\facade\Url;

Url::build(‘index/index’);

或者

useUrl;

Url::build(‘index/index’);

5.1为系统的类库注册了类库别名,因此可以直接从根命名空间方式调用Url。

所以路由配置文件中你可以直接删除下面的一行代码

usethink\Route;

2、配置文件调整

5.1的配置文件全部采用二级配置方式,所有的不带一级配置名的参数都会作为`app`的二级配置,例如

config(‘app_debug’);

等同于

config(‘app.app_debug’);

一级配置`app`下的配置参数都在`app.php`配置文件中定义。

如果要获取一级配置下面的所有参数,使用

\think\facade\Config::pull(‘app’);

原有的配置文件`config.php`按照模块拆分为`app.php`、`cache.php` 等独立配置文件放入`config`目录,系统默认的配置文件清单如下:

|配置文件|说明|

|—|—|

|app.php|应用配置文件|

|cache.php|缓存配置文件|

|cookie.php|Cookie配置文件|

|database.php|数据库配置文件|

|log.php|日志配置文件|

|session.php|Session配置文件|

|template.php|模板引擎配置文件|

|trace.php|页面Trace配置文件|

原来的应用`extra`目录下面的配置文件直接移动到`config`目录下面。

原来模块的配置目录直接移动到`config`目录下面后,然后参考上面的应用配置文件进行调整。

原有的路由定义文件`route.php` 移动到`route`目录下面,如果有定义其它的路由配置文件,一样直接放入`route`目录即可。

3、模型调整

为了确保模型的用法统一,对模型进行了一些调整,包括:

* 模型的数据集查询始终返回数据集对象而不再是数组;

* 模型的数据表主键如果不是`id`,则必须设置模型的`pk`属性;

* 软删除trait引入更改为 `use think\model\concern\SoftDelete`;

* 聚合模型功能废除,使用关联模型配合关联自动写入功能替代,更灵活;

4、常量调整

5.1取消了所有的框架内置常量,如需获取,请使用`App`类的内置方法获取,例如:

|5.0常量|5.1获取方法|

|—|—|

|EXT|取消,固定使用`.php`|

|IS_WIN|取消|

|IS_CLI|取消|

|ENV_PREFIX|取消,固定使用`PHP_`|

|THINK_START_TIME|App::getBeginTime()|

|THINK_START_MEM|App::getBeginMem()|

|THINK_VERSION|App::version()|

|THINK_PATH|App::getThinkPath()|

|LIB_PATH|App::getThinkPath().‘library/’|

|CORE_PATH|App::getThinkPath().‘library/think/’|

|APP_PATH|App::getAppPath()|

|CONFIG_PATH|App::getConfigPath()|

|CONFIG_EXT|App::getConfigExt()|

|ROOT_PATH|App::getRootPath()|

|EXTEND_PATH|App::getRootPath().‘extend/’|

|VENDOR_PATH|App::getRootPath().‘vendor/’|

|RUNTIME_PATH|App::getRuntimePath()|

|LOG_PATH|App::getRuntimePath().‘log/’|

|CACHE_PATH|App::getRuntimePath().‘cache/’|

|TEMP_PATH|App::getRuntimePath().‘temp/’|

|MODULE_PATH|App::getModulePath()|

另外也可以通过`Env`类的`get`方法获取这些路径变量(不区分大小写),例如:

Env::get(‘root_path’);

5、其它注意事项

extra_file_list 配置参数无效,请自己在common.php文件中引入。

5.1版本取消`Loader::import`方法以及`import`和`vendor`助手函数,推荐全面采用命名空间方式的类以及自动加载机制,如果必须使用请直接改为php内置的`include`或者`require`语法。

为了保持`Loader`类库的单纯性,原`Loader`类的`controller`、`model`、`action`和`validate`方法改为`App`类的同名方法。

路由类库进行了重构和拆分,在使用上更加对象化,同时为了简化方法调用,原来的`before_behavior`和`after_behavior`参数更改为`before`和`after`,并且路由缓存功能暂时取消。

`url_route_on`配置参数无效,会始终检查路由,没有定义路由的情况下默认解析方式依然有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值