THINKPHP 常见的问题
碰到问题前先看下官方的问题总结和说明:ThinkPHP5.0学习须知和常见问题集[传送门](http://www.thinkphp.cn/topic/38624.html)
[TOC]
* **关于老版本升级。tp5改动太大,非实力派和精力派不推荐老版本系统升级。**
1. ###单字母函数问题
单字母函数目前已被助手函数替换了。从官方的解释来说,单字母函数已经是时候功成身退了。整个thinkphp5框架进行了重构之后,核心框架不再依赖单字母函数。所以单字母函数消失了。不过可以自行恢复过来,不过推荐尽量不要用了,这个单字母函数一直褒贬不一。尽量看看主流的框架使用吧。
解决方式:
* 使用助手函数来完成单字母函数。 在助手函数里面处理 可以改为单字母函数
参考官方thinkphp5完全开发的文档
* [http://www.kancloud.cn/manual/thinkphp5/144731](http://www.kancloud.cn/manual/thinkphp5/144731)
2. ###URL访问出错
可能出现问题的原因,THINKPHP5所有访问均使用pathinfo模式。如果不支持PATHINFO的服务器可以使用兼容模式访问如下:
> http://serverName/应用入口文件?s=/模块/控制器/操作/[参数名/参数值...]
3. ###部分模板常量不再存在如`__ROOT__`、`__APP__`、`__SELF__`等
解决方案:自己在config.php 上增加 例如:
```
if (!IS_CLI) {
// 当前文件名
if (!defined('_PHP_FILE_')) {
if (IS_CGI) {
//CGI/FASTCGI模式下
$_temp = explode('.php', $_SERVER['PHP_SELF']);
define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'], '', $_temp[0] . '.php'), '/'));
} else {
define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'], '/'));
}
}
if (!defined('__ROOT__')) {
$_root = rtrim(dirname(_PHP_FILE_), '/');
define('__ROOT__', (($_root == '/' || $_root == '\\') ? '' : $_root));
}
define('PHP_FILE', _PHP_FILE_);
}
if(!defined('__APP__'))
define('__APP__', strip_tags(PHP_FILE));
// URL常量
if(!defined('__SELF__'))
define('__SELF__', strip_tags($_SERVER[C('URL_REQUEST_URI')]));
```
参考文档:THINKPHP5简明开发文档 [http://www.kancloud.cn/thinkphp/thinkphp5-guide/90317](http://www.kancloud.cn/thinkphp/thinkphp5-guide/90317)
4. ###视图问题 TP5使用return返回。对API友好,但对视图不友好。所以this->display();这种是不可以的;
解决方法:视图继承think/controller;然后return $this->fetch(); 未继承think/controller后,return view('index/hello');
5. ###模型改动 M函数已取消,进行数据查询时不用实例化了,
> 所有的查询都是静态方法实现的如:
Db::table('think_user')->select();
如果省略表前缀可以使用
Db::name('user')->select();
6. ###安装问题
thinkphp5支持composer安装。作为一个phper,个人觉得非常有必要学习一下composer。
传送门:[composer备忘录](http://www.kancloud.cn/iwzh/wzhquestion/132015)
7. ###
- 说明
- PHP
- 数组操作
- file操作的常用方法
- PHP字符串输出之Heredoc说明
- require(_once)和include(_once)的理解
- file_get_contents和curl
- PHP的json问题
- PHP提高效率的几点
- PHP/异步任务队列处理
- HTTP_AUTHORIZATION
- php中 intval和string的一些转换问题
- 变量在 PHP7 内部的实现
- 关于exit和die
- php获取微秒
- php高性能日志扩展seaslog的使用
- Curl使用说明
- echo的数据自动增加换行或其他
- php-memcache
- 根据18位数校验前17位身份证号是否正确
- 将一个老项目升级到php7
- ord获取ASCII码
- 框架
- thinkphp5
- THINKPHP5常见问题
- Laravel5学习笔记
- homestead总结
- easywechat学习笔记
- wechat公众号
- 获取用户信息的实现方式
- 前端
- HTML
- CSS
- 伪类和伪元素的区别
- Bootstrap使用
- Javascript
- Javascript梳理总结
- 巧用history.pushState无刷新改变页面url
- jquery日期时间选择器组件datepicker的使用说明
- 基本操作
- 比较
- 后端/Nodejs
- 多nodejs版本管理
- 小功能
- URLAPI
- 二维码转换
- 地图URL直接实现导航
- 字体生成
- 网址长短互转
- 百度短网址
- Fiddle模拟测试百度短网址api
- Composer备忘录
- composer安装配置
- Composer 错误集锦
- Composer使用自己的库
- GIT简单操作命令
- Git记住密码
- git 显示错误详情和请求信息
- 工具软件
- PHPStorm
- VI简单操作命令
- ATOM
- browser提示shockwave false加载失败
- Cmder使用说明
- Windows软件总结
- 浏览器插件
- 支付
- 微信支付
- 支付宝
- 银联支付
- Ping++
- Beecloud支付
- Map
- 百度地图BaiduMap
- RESTfulAPI设计实践
- HTTP
- GET/POST 的请求大小
- 常见状态码说明
- Ubuntu
- 命令行中的>>和>的区别
- 笔记
- 正则
- Hybrid的使用记录
- H5+和mui
- HTML5+和mui使用
- APP开发过程中蓝牙问题总结
- Cordova的使用
- 服务器
- URL重写
- 目录限制访问
- 软链接和硬链接
- 票务系统对接资料和总结
- qunar去哪儿门票对接
- qunar对接case介绍及错误代码
- tuniu门票对接总结
- 途牛小结
- 联合票务对接途牛文档说明
- 途牛签名流程
- meituan美团
- 大众点评
- 联合票务
- 安卓使用技巧
- 安卓清理电池信息
- 安卓6.0使用时发现的问题
- 数据库
- 数据库mysql
- 分页数据优化
- 手机号用不到索引的问题分析
- mysql配置的localhost和127.0.0.1的区别
- mysql5.5升级mysql5.7
- 数据库MongoDB
- Redis使用说明
- phpredis使用说明
- 环境变量
- Twig使用
- 经典的文章
- 用超人的故事讲解 IoC(控制反转) 和 DI(依赖注入)