ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
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. ###