THINKPHP 常見的問題
碰到問題前先看下官方的問題總結和說明:ThinkPHP5.0學習須知和常見問題集[傳送門](http://www.thinkphp.cn/topic/38624.html)
[TOC]
* **關于老版本升級。tp5改動太大,非實力派和精力派不推薦老版本系統升級。**
1. ###單字母函數問題
單字母函數目前已被助手函數替換了。從官方的解釋來說,單字母函數已經是時候功成身退了。整個thinkphp5框架進行了重構之后,核心框架不再依賴單字母函數。所以單字母函數消失了。不過可以自行恢復過來,不過推薦盡量不要用了,這個單字母函數一直褒貶不一。盡量看看主流的框架使用吧。
解決方式:
* 使用助手函數來完成單字母函數。 在助手函數里面處理 可以改為單字母函數
參考官方thinkphp5完全開發的文檔
* [http://www.hmoore.net/manual/thinkphp5/144731](http://www.hmoore.net/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.hmoore.net/thinkphp/thinkphp5-guide/90317](http://www.hmoore.net/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.hmoore.net/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(依賴注入)