THINKPHP 常见的问题
碰到问题前先看下官方的问题总结和说明:ThinkPHP5.0学习须知和常见问题集[传送门](http://www.thinkphp.cn/topic/38624.html)
目前最佳的V5教程是官方的 《 [ThinkPHP5.0快速入门](http://www.kancloud.cn/thinkphp/thinkphp5_quickstart) 》
**首先不要带着3.2版本的思维习惯和定式来理解和使用TP5 ,TP5是一个全新的颠覆重构版本,跨版本发布是经过深思熟虑的结果,不是闹着玩的,在很多方面TP5对原有的开发模式进行了颠覆,这其中最大的莫过于对模型和数据库的重构了。从某种意义上来说,如果你不彻底理解5.0的模型用法,那么你将无法正确掌握TP5,就算是你把老项目迁移到5.0上,也不代表你理解5.0的心。 **
**重要说明:想要学习和掌握TP5,必先掌握两个知识:对象和命名空间、对象和命名空间、对象和命名空间,重要事情说三遍。如果你还没有掌握这两个,TP5估计与你无缘了**
原有的老版本开发的项目将很难升级到5.0版本,至少从5.0RC3版本开始,这一问题显得非常的越来越明显,如果你试图这么做,那么请确保你有足够的能力,因为不要指望官方会浪费时间在老版本的兼容和升级上来,我们已经下决心彻底放弃兼容升级的可能,并重新评估哪些方面的不良习惯是需要纠正的。
**如果你有发现问题,请使用最新版本的github版本测试是否依然还有问题,同时官方对反馈问题的修正只是表明我们在github版本库上已经进行了修正,并不代表下载包会及时更新。同时在线完全开发手册也是针对最新的版本库进行同步更新,如发现用法不符,请及时更新到最新的框架版本**
下面是作为一个新手(我们姑且称之为新手吧~)经常会问到的问题列表,稍加整理,以后会增补:
(更多的常见问题请参考:[ThinkPHP5.0快速入门](http://www.kancloud.cn/thinkphp/thinkphp5_quickstart) ->附录->常见问题集)
* **关于老版本升级。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=/模块/控制器/操作/[参数名/参数值...](http://servername/%E5%BA%94%E7%94%A8%E5%85%A5%E5%8F%A3%E6%96%87%E4%BB%B6?s=/%E6%A8%A1%E5%9D%97/%E6%8E%A7%E5%88%B6%E5%99%A8/%E6%93%8D%E4%BD%9C/[%E5%8F%82%E6%95%B0%E5%90%8D/%E5%8F%82%E6%95%B0%E5%80%BC...)]
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)
- PHP学习
- PHP应用
- PHP函数总结整理
- 39个对初学者非常有用的PHP技巧
- 深入浅出之Smarty模板引擎工作机制
- 数组操作
- file操作的常用方法
- PHP字符串输出之Heredoc说明
- require(_once)和include(_once)的理解
- PHP提高效率的几点
- php无限遍历目录
- 53个要点提高PHP编程效率
- THINKPHP
- THINKPHP 常见的问题
- 微信
- 微信公众号接口
- 微信小程序开发资料收集
- 微信小程序开发:MINA
- 通过微信小程序看前端
- 微信小程序开发初体验
- 微信小程序 Demo(豆瓣电影)
- API应用
- 支付宝
- 二维码转换
- 前端开发
- HTML5
- CSS
- 七种css方式让一个容器水平垂直居中
- JavaScript
- JavaScript奇技淫巧44招
- JavaScript笔记
- 后端开发
- Node
- SQL数据库
- 服务维护
- git使用
- Git入门私房菜
- MAC终端维护
- VIM命令大全
- 开发规范
- 智能手机屏幕的秘密
- 超实用六步透视网易设计规范(附完整PDF下载)
- UI设计常用字体规范
- APP界面切图命名和文件整理规范
- 网页UI视觉设计规范
- ios视觉设计规范说明
- 开发APP时需要注意的原则
- 移动端APP设计初步入门
- Axure
- 基础操作
- 基础1-10
- 基础11-20
- 基础21-30
- 基础31-40
- 基础41-50
- 基础51-60
- Sketch
- 软件使用
- sublime3_用户设置
- sublime下如何修改自动补全 后lang=zh-cn?
- 运营理念
- 新人指导心得体会
- 从一次活动设计,聊聊交互设计师的3个阶段
- 详情页优化那些不得不说的细节
- 店铺装修浅析
- 淘宝店铺装修之宝贝详情页的布局教程
- 宝贝详情页 客户需求调研及总结
- 宝贝描述样板房