# çæ¬æ´æ°æ¥å¿
[TOC=2,2]
## `V6.0.7`ï¼2021å¹´01æ25æ¥ï¼
æ¬çæ¬ä¸»è¦é对ä¸ä¸ªçæ¬åäºä¸äºè·¯ç±ä¿®æ£ï¼è¿æå¤æ¶è·äºä¸äºæ§è½æåï¼æ¯ä¸ä¸ªå»ºè®®æ´æ°ççæ¬ã
* ä¿®æ£`Validate`ç±»çPHP8å
¼å®¹æ§
* æ¹è¿`redis`驱å¨ç`append`æ¹æ³
* ä¿®æ£è·¯ç±å¹é
æ£æµé®é¢
* ä¼åè·¯ç±åéæ£åè§åçæ
* æ¹è¿`responseView`çå
容渲æ
## `V6.0.6`ï¼2021å¹´01æ11æ¥ï¼
æ¬çæ¬æ´æ°ä¸ºå
¼å®¹PHP8.0çæ¬ï¼å¹¶åäºä¸äºçæ¹è¿åä¼åã
* å
¼å®¹`composer2 `çæé
ç½®æ件
* ä¼å`optimize:schema`æ令
* å¢å `socket-log` ç curl è¶
æ¶è®¾ç½®
* ä¿®æ£è·¯ç±å¹é
* å¢å å
¼å®¹`PHP8`å¤ç
* å¢å æ±åè¯å«å¹é
èå´ æ¯æé¨åçå»åæ£å
* æ¹è¿ååºæ件请æ±æ¶çç¼å²æ¸
é¤
* èµæºè·¯ç±æ¯æ设置åéè§å
* `$request->ip()` æ¹æ³å
¼å®¹PHP8
* ä¿®å¤éªè¯å¨`in`ã`between`æ¹æ³,使ç¨æ°ç»,åè½å¼å¸¸
* ä¿®æ£å«æ`__make`çç±»å®ä¾ååæªæ§è¡`invokeAfter`çé®é¢
* ä¿®å¤å½ä»¤è¡å建ä¸é´ä»¶å½å空é´æ æ bug
## `V6.0.5`ï¼2020å¹´10æ27æ¥ï¼
æ¬æ¬¡æ´æ°ä¸ºå
¼å®¹Composer2.0åçç¹å«æ´æ°çæ¬ï¼ä¸»è¦å
å«ï¼
* ä¿®æ£éªè¯ç±»appendæ¹æ³
* æ¹è¿ç¼åæ ç¾æºå¶
* æ¹è¿éå
è·¯ç±å
使ç¨request对象
* æ¹è¿æ件ç¼å驱å¨
## `V6.0.4`ï¼2020å¹´9æ28æ¥ï¼
æ¬æ¬¡æ´æ°ä¸ºå¸¸è§æ´æ°ï¼ä¸»è¦å
å«ï¼
### æ°å¢
* [æ°å¢] å¤è¯è¨æ¯æ解æ`json`æ件
* [æ°å¢] å¢å `app.url`é
ç½® ç¨äºå½ä»¤è¡ä¸æ建`request
`
* [æ°å¢] 模åç±»å¢å `convertNameToCamel`å±æ§ï¼æ¯ææ°æ®æ ¼å¼è½¬ä¸ºé©¼å³°å½åè¾åº
* [æ°å¢] `Relation`ç±»å¢å `getForeignKey`å`getLocalKey`æ¹æ³
### ä¿®æ£
* [ä¿®æ£] ä¿®å¤è§å为空çbug
* [ä¿®æ£] ä¿®æ£è¯·æ±ç¼åä¸é´ä»¶
* [ä¿®æ£] æ¹è¿éªè¯ç`append`æ¹æ³å¤çé æå¤æ¬¡éªè¯çæ
åµ
* [ä¿®æ£] æ¹è¿èµæºè·¯ç±å¯¹è·¯ç±å°ç±»çæ¯æ
* [ä¿®æ£] ä¿®æ£éå®åè·¯ç±çä¼ å
* [ä¿®æ£] è°æ´`http`åå§åä½ç½® é²æ¢å®¹å¨ç»å®èªèº«é ææ»å¾ªç¯
* [ä¿®æ£] æ¹è¿Redis驱å¨`select`åæ°å¤ç
* [ä¿®æ£] æ¹è¿å¤å¯¹å¤å
³èæ¥è¯¢
### ä¼å
* [ä¼å] ä¼å`session `æ件ç¼å `path `è·å
* [ä¼å] æ¹è¿è·¯ç±åæ°æ£æµ
* [ä¼å] æ¹è¿è·¯ç±åæ°è·åååéæ£æ¥
* [ä¼å] è·¯ç±ç请æ±ç¼åå¯ä»¥éè¿`request_cache_key`é
ç½®åæ°å
³é 便äºå¼å模å¼
* [ä¼å] è°æ´è·¯ç±é
置载å
¥ä½ç½®
* [ä¼å] æ¹è¿è·¯ç±ç¼åæ令 åæ¶`opis/closure`ä¾èµ
* [ä¼å] æ¹è¿è·¯ç±çé¢å¤åæ°æ£æµ
* [ä¼å] æ¹è¿`Config`ç±»ç`has`æ¹æ³å¤æ
* [ä¼å] æ¹è¿åæ°ç»å®å¯¹Nullå¼çæ¯æ
* [ä¼å] æ¹è¿`when`æ¡ä»¶æ¥è¯¢çéå
å¤ç
* [ä¼å] æ¹è¿ä¸å¯¹ä¸å
³èæ¥è¯¢å¯¹`order`æåºçæ¯æ
## `V6.0.3`ï¼2020å¹´6æ25æ¥ï¼
æ¬æ¬¡æ´æ°å
å«ä¸ä¸ªè°è¯æ¨¡å¼çç³»ç»ä¿¡æ¯å®å
¨éæ£ä¿®æ£ï¼å»ºè®®æ´æ°ã
### 主è¦æ´æ°ï¼
* å¼å¸¸æå`session`æ°æ®æ¶å
å¤ææ¯å¦ä½¿ç¨äº`session`
* ä¿®æ£æ件ä¸ä¼ ç±»
* åæ¶`Event`ç±»`withEvent`æ¹æ³
* `FileResponse`æ¯ææ¯å¦å¼ºå¶ä¸è½½è®¾ç½®
* `Request`对象æ¯æ`ArrayAccess`æ¥å£
* æ¥å¿çæ¶é´è®°å½å¢å å¾®ç§æ°æ®æ¯æ
* è°æ´ `Validate `åºæ¯æ§è¡ä¼å
级
* ä¼åAppç±»`getDefaultRootPath`æ¹æ³
* ä¿®æ£å
¨å±ä¸é´ä»¶è·å`param`åæ°çBUG
* clearå½ä»¤æ¯æå¤å±çº§ç®å½
* ä¿®æ£æ¥å¿è®°å½æ¶åºé®é¢
* ä¿®å¤å©æå½æ°`public_path`
* ä¸é´ä»¶æ¯æå¤ä¸ªåæ°
* è·¯ç±æ£æµä¸¥æ ¼æç
§è·¯ç±å®ä¹ç顺åºæ§è¡
* `FileResponse`å¢å æ¯å¦å¼ºå¶ä¸è½½æ件é项
* ä¿®å¤èªå®ä¹å½ä»¤å«åæ¯ç³»ç»å«åé¿å¯¼è´æ¥éé®é¢
* æ¹è¿è·¯ç±å°è§å¾çåéä¼ é
* å
许路ç±å°ä¸ä¸ªèªå®ä¹è°åº¦ç±»
* å®åè·¯ç±åå
æµè¯
* é»è®¤è·¯ç±ä¹æ¯æèªå¨`OPTIONS`请æ±
* æ¹è¿è·¯ç±è°åº¦
* æ¹è¿hoståportçè·åæ¯æ代ç
* `Request->port` çè¿åç±»å转å
* æ¹è¿æ¨¡åçæ模æ¿
* ç®åé»è®¤å¼å¸¸é¡µé¢ä¿¡æ¯æ¾ç¤º
* æ°æ®åºæ¯æ设置ç¼åstore
* æ¹è¿`optimize:schema`æ令
* 为æ¸
çæ令添å ä»
å é¤è¿ææ件çé项
* 请æ±ç¼åå¢å é¢æ£ç¼åé
ç½® é»è®¤æææ1800ç§
* æ¯æ`header`æ¹å¼èªå¨ä¾¦æµå¤è¯è¨
## `V6.0.2`ï¼2020å¹´1æ13æ¥ï¼
æ¬æ¬¡æ´æ°å
å«ä¸ä¸ªå¯è½ç`Session`å®å
¨éæ£ä¿®æ£ï¼å»ºè®®æ´æ°ã
### 主è¦æ´æ°ï¼
* æ¹è¿è®¾ç½®æ¹æ³åç¼åçæä½åè·åé®é¢
* ä¿®æ£`optimize:schema`æ令
* ä¿®æ£`Request`ç±»`inputData`å¤ç
* æ¹è¿ä¸é´ä»¶æ¹æ³æ¯æä¼ å¤ä¸ªåæ°
* ä¿®æ£`sessionid`æ£æ¥çä¸å¤éæ£
* å®å对15ä½èº«ä»½è¯å·ç çæ ¡éª
* å¢å è¿ç¨å¤å¯¹å¤å
³èæ¯æ
* å¢å `MongoDb`çäºå¡æ¯æï¼`mongodb`çæ¬V4.0+ï¼
* æ¹è¿`insertAll`ç`replace`æ¯æ
## `V6.0.1`ï¼2019å¹´12æ24æ¥ï¼
### 主è¦æ´æ°ï¼
* å®å`Request::withInput
`
* ä¿®æ£Content-Typeè·åéå¾
* æ¹è¿ SocketLog 驱å¨
* ä¿®æ£ ClientArg è·åéå¾
* ä¿®å¤FileResponseçcookie空对象å¼å¸¸
* æ¯æ渲æå®æ´çå¼å¸¸é¾ä¿¡æ¯
* å¼å¸¸é¡µé¢æ¯ææå è°ç¨å æ ä¿¡æ¯
* æ¹è¿å¼å¸¸ååºæ¶å
容çä¸è´æ§
* æ¹è¿Erroræ§å¶å¨å¯¹æ°å访é®çæ¯æ
* ä¿®æ£redirectå©æå½æ°
* memcached delete æ¯æ timeout
* ä¿®æ£redis驱å¨
* æ¹è¿memcache驱å¨
* æ¹è¿å®¹å¨ç±»`invokeMethod`æ¹æ³
* 使ç¨æ°çæ°ç»è¯æ³æ¿ä»£list
* ç¼åé»è®¤çåºååæ¹æ³æ¹ä¸ºserialize/unserialize
* Add Cookie SameSite(PHP>7.3)
* æ©å±`Socket`驱å¨
* ä¿®æ£å¼å¸¸é¡µé¢ç模æ¿æ件
* äºä»¶çå¬å»é
* åæ¶è§å¾æ¥å¿
* ä¿®æ£éªè¯jpgç»å°¾çå¾çæ¥éé®é¢
* æ¹è¿Urlçæ
* æ¹è¿Urlçæ伪éæåç¼è®¾ç½®falseçæ
åµ
* æ¹è¿Fileç±»åsession读å`gzcompress`é®é¢
* ä¿®å¤ä½¿ç¨è·¯ç±éªè¯åè·¯ç±åé丢失çé®é¢
* ä¿®æ£å¤åºç¨ä¸è·¯ç±ç®å½è·¯å¾
* ä¿®å¤ `expand_level `é项å¼å¸¸
* æ¹è¿Cacheç±»`remember`æ¹æ³å¯¹ä¾èµæ³¨å
¥çæ¯æ
* é²æ¢å æ¥å¿é
ç½®å¼å¸¸æ¶é·å
¥æ»å¾ªç¯
* 模åæ¯æå¨æ设置æ°æ®åºè¿æ¥
* ä¿®æ£`column`æ¹æ³çæ¥è¯¢ç¼åé®é¢
* æ¹è¿Queryç±»ç`getAutoInc`æ¹æ³
* æ¹è¿æ¨¡åæ´æ°æ¡ä»¶è·å
* ä¿®æ£ä½¿ç¨æ¨¡å对象æ´æ¹æ°æ®æ¶å¿½ç¥èªå®ä¹ç`suffix `å `connection`åæ°
* ä¿®æ£XAäºå¡
* è§è`column`æ¹æ³çæ¥è¯¢
## `V6.0.0`ï¼2019å¹´10æ24æ¥ï¼
### 主è¦æ´æ°æ¥å¿
* mobile éªè¯ç®å
* æ§å¶å¨ä¸é´ä»¶æ¯æä¼ å
* å¢å¼ºä¸é´ä»¶CheckRequestCacheçå®ç¨æ§
* æ¹è¿å®¹å¨invokeClassæ¹æ³å¼å¸¸å¤ç
* æ§å¶å¨ä¸é´ä»¶è¿æ»¤æ¡ä»¶æ¯æå符串
* æ¹è¿Routeç±»getDomainBindæ¹æ³
* é²æ¢è·¯ç±æ è¯çæURLæ¶çæ空å符串
* 让ä¸é´ä»¶CheckRequestCacheåªè®¿é®ä¸æ¬¡ä¸´çåº
* å®åå½ä¸å¤æ
* ä¿®æ£Request::portè¿åç±»å
* å¢å¼ºé«å¹¶åä¸session_idçæçå¯ä¸æ§
* åæ¶è·¯ç±ç¼ååè½åç¸å
³æ令
* ä¿®æ£ Request::remotePort è¿åç±»å
* å®åè·¨åä¸é´ä»¶çååºå¤´é¨
* æ¹è¿å®¹å¨å¼å¸¸å¤ç
* æ¹è¿çææ件模æ¿
* 移é¤buildæ令纳å
¥æ©å±
* æ¹è¿Responseå¢å cookieæ¹æ³ç¨äºè®¾ç½®Cookie
* ä¿®æ£çæURLä¸ä¼ åæ°æ¶ï¼æ¹æ³å为空
* ä¿®å¤ä¸é´ä»¶CheckRequestCache使ç¨è¿ææ°æ®
* ä¿®å¤memcache驱å¨incå½æ°éå¤æ·»å åç¼é®é¢
* å é¤Resonseç±»setCookieæ¹æ³
* 使ç¨session_create_idçæidï¼ä¿è¯å¯ä¸æ§
* ä¿®å¤ä¸é´ä»¶FormTokenCheckæ æ³å¯ç¨é®é¢
* ä¿®æ£haltå©æå½æ°
## RC5ï¼2019å¹´10æ13æ¥ï¼
`RC5`çæ¬ä¸»è¦æ¹è¿å
æ¬å¤åºç¨æ¨¡å¼ç¬ç«ï¼ä»¥åä¸é´ä»¶æºå¶è°æ´ã
### 主è¦æ°ç¹æ§
* å¤åºç¨æ¨¡å¼ç¬ç«ä¸ºæ©å±
* ä¸é´ä»¶åç»æ§è¡
* å¢å è·¯ç±é
ç½®æ件çå
¨å±ä¸é´ä»¶å®ä¹
* ä¸é´ä»¶æ¯æä¼å
级å®ä¹
* ä¸é´ä»¶æ¯æ请æ±ç»æåè°
* ä¸é´ä»¶æ§è¡å»é
* 模æ¿æ ¹ç®å½å
é
ç½®èªå¨è¯å«
* æ¹è¿æºè½äºä»¶è®¢é
* 页é¢Traceç¬ç«ä¸ºæ©å±
### æ´æ°æ¥å¿
* ä¿®æ£requestç±»isJsonæ¹æ³
* æåswooleä¸å¤åºç¨çæ§è½
* ä¿®æ£Cookieä¿å
* æ¹è¿å段ç¼åæ令
* ä¿®æ£è·¯ç±æ£åçæ
* æ¹è¿æ¨¡æ¿åéçå
¨å±èµå¼
* æ¹è¿filesystem
* æ¹è¿View å¢å åå
æµè¯
* ä¿®æ£php模æ¿é©±å¨
* åæ¶view_baseé
ç½®ï¼å¢å view_dir_nameé
ç½®
* å®åSessionåå
¶åå
æµè¯
* æ¹è¿sessionå©æå½æ°æ¯æè·åæææ°æ®
* å®åä¸é´ä»¶åå
¶åå
æµè¯
* æ¹è¿äºä»¶æºè½è®¢é
* éªè¯é误信æ¯æ¯ææ°ç»
* æ¹è¿å¤è¯è¨èªå¨ä¾¦æµ
* æ¹è¿èªå¨å¤è¯è¨
* æ¹è¿äºä»¶è§å¯è
æ¯æäºä»¶åç¼
* å»é¤Cacheè¿åç±»åéå¶
* å¤åºç¨é
置读åä¼å
级è°æ´
* å¤åºç¨è·¯ç±æ¹è¿
* æ¹è¿æ¹ééªè¯çé误信æ¯è¿å
* 页é¢Traceä¸é´ä»¶ç§»é¤ æ¹ä¸ºæ©å±
* æ¹è¿sessionåå§åä¸é´ä»¶
* ä¿®æ£é»è®¤URL访é®
* ä¿®æ£urlçæ对ååç»å®çæ¯æ
* æ¹è¿ä¸é´ä»¶æºå¶ å
¨å±ãè·¯ç±åæ§å¶å¨ä¸é´ä»¶åå¼
### è°æ´
* è·åå½ååºç¨åæ¹ä¸º`app('http')->getName()`
## RC4ï¼2019å¹´8æ16æ¥ï¼
`RC4`çæ¬ä¸»è¦æ¹è¿å
æ¬`ORM`åºç¬ç«ï¼æ¥å¿ç³»ç»å¢å å¤ééæ¯æï¼ç¼åãæ¥å¿ãæ°æ®åºçé
ç½®æ件ç»ä¸è°æ´ä¸ºå¤éé模å¼ï¼å¹¶ä½äºå¤§éçæ¹è¿åä¿®æ£ã
### 主è¦æ°ç¹æ§
* æ°æ®åºå模åæ¹ä¸ºç¬ç«ç`think-orm`åº
* 模åå
³èåè½å¢å¼º
* æ¥å¿æ¯æå¤ééã并ç»ä¸å½ä»¤è¡åWEBæ¥å¿æ ¼å¼
* å¢å `Filesystem`ç»ä»¶
* å¢å 容å¨å¯¹è±¡å®ä¾ååè°æºå¶
* è·¯ç±æ³¨è§£ç¬ç«ä¸º`think-annotation`åº
* å¤åºç¨æ¨¡å¼ä¸è·¯ç±å®ä¹æ¯æ纳å
¥åºç¨ç®å½
### åè½æ¹è¿
* æ¹è¿è·¯ç±ç±»çé
置读å
* æ¹è¿`parseLike`æ¥è¯¢
* æ¹è¿`ViewResponse`ç±»å¢å å
容渲æè¾åºæ¯æ
* å¢å `display`å©æå½æ°
* éªè¯ç±»`maker`æ¹æ³æ¯æ注å
¥æ©å±éªè¯è§å
* æ¹è¿äºä»¶è§¦åçå¯¹è±¡ä¼ å
¥
* æ¹è¿`Console/Table`ç±»
* æ¹è¿å
³èå®ä¹å¯¹æ¥è¯¢æé å¨çæ¯æ
* å
³èç±»å¢å `withField`å`withLimit`æ¹æ³ï¼å¹¶åæ¶`Query`ç±»`withField`æ¹æ³
* å¢å 延è¿å
³èæ¥è¯¢å¯¹`withLimit`çæ¯æ
* æ¹è¿æ¨¡å`toArray`æ¹æ³
* æ¹è¿Urlçæçåååæ°
* æ¹è¿ `make:command`æ令çæ
* ç¼åææææ¯æ`DateInterval
`
* æ¹è¿Queryç±»findæ¹æ³
* æ¹è¿`json`æ¥è¯¢
* æ¹è¿æ¥è¯¢ç¼å
* å¢å `filesystem`ç»ä»¶
* æ¹è¿è·¨å请æ±
* æ¹è¿è·¯ç±æ£æµç¼åé
ç½®
* æ¹è¿æ³¨è§£è·¯ç±çæ件åå
¥
* è·¯ç±æ³¨åæ¯æ注å`options`请æ±ç±»å
* æ¹è¿éå®åè·¯ç±æ£æµ
* æ¹è¿æ¨¡åç`hasWhere`æ¹æ³å¯¹éå
æ¥è¯¢æ¡ä»¶çæ¯æå®å
* å¢å `time_query_rule`æ°æ®åºé
ç½®åæ° ç¨äºèªå®ä¹æ¶é´æ¥è¯¢è§å
* æ¹è¿æ¶é´å段类åçèªå¨è¯å«
* æ¹è¿`redis`驱å¨
* 容å¨å¯¹è±¡å¢å `invoke`åè°æºå¶
* æ¹è¿å¤å¯¹å¤å
³è
* èµæºè·¯ç±å¢å `withModel`å`withValidate `对å个路ç±è®¾ç½®ä¸åç模åç»å®åéªè¯
* æ¹è¿`getLastInsID`æ¹æ³
* æ¥å¿ç±»è°æ´ æ¯æå¤ééåå
¥
* æ¹è¿æ¨¡åè¾åº
* æ¯æåç¬å
³éæ个ééçæ¥å¿åå
¥
* åæ¶é¨ç½²æ¨¡å¼ä¸ ä¸åå
¥è°è¯æ¥å¿çåè½ ç¨è°è¯çº§å«è®¾ç½®åç¬çæ¥å¿æ¸ éæ¥æ¿ä»£
* æ¹è¿æ¥å¿è®°å½æ ¼å¼
* æ¯ææ¥å¿è¾åºæ ¼å¼å
* æ¹è¿èµæºè·¯ç±
* æ¹è¿å½ä»¤è¡æ¥å¿å®æ¶åå
¥
* æ¥å¿ééæ¯æåç¬è®¾ç½®levelé
ç½®åæ°
* Logç±»è°æ´ä¼å
* å¢å `paginateX`æ¥è¯¢ç¨äºå¤§æ°æ®å页æ¥è¯¢
* æ°æ®éå¢å `first`å`last`æ¹æ³
* æ¹è¿`response/View`ç±»ç`assign`æ¹æ³
* æ¹è¿è¯·æ±åæ°è·åé®é¢
* æ¹è¿`pathinfo`æ¹æ³
* å¢å ä¸äºè·¯å¾å©æå½æ°
* æ¹è¿å¤çº§æ§å¶å¨è®¿é®
* Logç±»æ¯æ`__call`æ¹æ³
* å¤åºç¨æ¨¡å¼çè·¯ç±å®ä¹æ¯ææ¾å
¥åç¬çåºç¨ç®å½
* 模åå¢å ä¾èµæ³¨å
¥æ¯æ
* æ¹è¿æ¨¡åäºä»¶
* æ¹è¿é¡µé¢`Trace`æºå¶
* æ¹è¿`validate`å©æå½æ°,æ¯æ设置éªè¯å¤±è´¥åæ¯å¦æåºå¼å¸¸
* æ¹è¿å®¹å¨`bind`æ¹æ³
* æ¹è¿Redis Session驱å¨
* æ¹è¿æ¥å¿è®°å½ç空è¡é®é¢
* æ¹è¿`RedirectResponse
`
* æ¹è¿ç¼å驱å¨
* æ¹è¿`think optimize:schema` æ令
* Urlç±»å¢å httpsæ¹æ³
* æ¹è¿`isPjax`å¤æ
* æ¹è¿Dbç±»é
ç½®è·å
### é®é¢ä¿®æ£
* ä¿®æ£æ¨¡åå±æ§è·å
* ä¿®æ£Requestç±»çè¿æ»¤åè½
* ä¿®æ£`subDomain
`æ¹æ³
* ä¿®æ£`input`å©æå½æ°
* ä¿®æ£æ¨¡å`refresh`æ¹æ³
* ä¿®æ£å
³èç»è®¡ä¸ä½¿ç¨åæ¥è¯¢çæ¹å¼
* ä¿®æ£Requestç±»`root`æ¹æ³
* ä¿®æ£ç¼åæææå¤ç
* ä¿®æ£`MorphTo`å
³è
* ä¿®æ£ç¼åæ ç¾
* ä¿®æ£mysql驱å¨`insert`æ¹æ³
* ä¿®æ£Dbç±»`connect`æ¹æ³
* ä¿®æ£`allowCrossDomain`æ¹æ³
* ä¿®æ£Queryç±»`chunk`æ¹æ³
* ä¿®æ£åç»è·¨å
* ä¿®æ£å
³èé¢è½½å
¥æ¥è¯¢
* ä¿®æ£æ¶é´å段åå
¥
* ä¿®æ£éªè¯ç±»`checkSize
`
* ä¿®æ£å¤å¯¹å¤å
³èéå
* ä¿®æ£RuleNameç±»`setRule`æ¹æ³
* ä¿®æ£`whereTime`æ¥è¯¢
* ä¿®æ£`request`å©æå½æ°
* ä¿®æ£æ¥å¿å
³éé
ç½®
* ä¿®å¤å¯¹å¤åèå符çå
¼å®¹æ§
### ç¨æ³è°æ´
* 模ååæ¢åç¼æ¹æ³`switch`æ´æ¹ä¸º`suffix
`
* åæ¶Queryç±»ç`fetchArray`æ¹æ³
* `select`æ¥è¯¢æ¹æ³é»è®¤è¿åæ°æ®é对象
* åæ¶`optimize:config`æ令
* è°æ´æ°æ®åºåç¼åé
ç½®æä»¶æ ¼å¼ é»è®¤éç¨å¤ç±»åæ¯æ æ¹ä¾¿åæ¢
* Cacheç±»ç`init`å`connect`æ¹æ³åæ¶ å¹¶å
¥`store`æ¹æ³
* `cache`å©æå½æ°è°æ´
* `cache`å©æå½æ°åæ¶åå§åç¨æ³
* `cache`å©æå½æ°ç空è¿åCache对象
* è°æ´è°è¯æ¨¡å¼æ£æµä½ç½®
* é»è®¤æ¶é´å段类åæ¹ä¸º`timestamp
`
* åæ¶Modelç±»`getConnection`å`setConnection`æ¹æ³
* 注解路ç±ç§»åºæ ¸å¿ï¼æ³¨è§£ç¸å
³åè½ä½¿ç¨`topthink/think-annotation
`
* æ¹è¿è·¯ç± åæ¶`url_convert`é
ç½®åæ°
* åæ¶`route:build`æ令
* è°æ´é»è®¤æ¨¡æ¿ç®å½ä¸ºæ ¹ç®å½`view
`
* åæ¶é»è®¤ç请æ±æ¥å¿è®°å½ å¨é¡¹ç®éé¢èªå·±æ·»å
* ç»ä¸`find`æ¥è¯¢å¿
须使ç¨æ¥è¯¢æ¡ä»¶
* æ©å±çserviceé
ç½®æ件é»è®¤æ¾å°vendorç®å½ä¸
* åºé¤`LogLevel`äºä»¶
* åæ¶Appç±»çåºååæ¹æ³
* æ§å¶å°ç`user`é
ç½®æ¹ä¸ºéè¿éææ¹æ³è®¾ç½®å½åæ§è¡ç¨æ·
## RC3ï¼2019å¹´6æ3æ¥ï¼
RC3çæ¬ä¸»è¦æ¹è¿åä¼åäºç³»ç»å
ç½®ä¸é´ä»¶ï¼æ¹è¿äºä¸äºç¨æ³åä½éªï¼å¹¶ä¸æä¸å¸¸ç¨ç驱å¨ç§»åºæ ¸å¿æ¹ä¸ºæ©å±æ¹å¼æä¾ã
### 主è¦æ°ç¹æ§
* å¢å `whereWeek`æ¥ææ¥è¯¢
* èªå¢IDè·åæ¯æç±»åèªå¨è½¬æ¢
* å½å请æ±è®°å½å¹é
è·¯ç±è§å
* å¢å `requireWithout`éªè¯è§å
* ä¼åè·¯ç±extånameæ¹æ³ä»¥åURLçæ
* å¢å 项ç®èªå®ä¹ç±»
* URLçæ使ç¨å¯¹è±¡æ¹å¼æä½
* ä¿®æ¹å¨æ¹è¿
* `dump`/`halt`å©æå½æ°è°æ´æ¯æè¾åºå¤ä¸ªåé
* å
³èèªå¨æ´æ°
* 模åæ°æ®éå¢å `delete`å`update`æ¹æ³
* 模åæ¯æ表åç¼ä»¥åå¨æåæ¢
* 注解路ç±æ¯æç»æ个路ç±æå®æå±åç»
* å¤è¯è¨æ¯æåç»å®ä¹
* æ¯æèªå®ä¹å è½½è¯è¨æ件
* å¤è¯è¨å®ä¹æ¯æYMLæ ¼å¼
* ç¼åæ ç¾æ¹è¿
* ç¼åç±»å¢å `push`æ¹æ³
* Cookieä¿åæ¶é´æ¯æDateTimeInterface
* å¢å 表å令çä¸é´ä»¶
* æ§å¶å¨æ¯æ__callæ¹æ³
* å¢å `deny_app_list`é
ç½®åæ°
* æ§å¶å¨ä¸é´ä»¶onlyåexceptå®ä¹ä¸åºå大å°å
* `app_map`æ¯ææå®æ³åºç¨æ å°
### é®é¢ä¿®æ£
* ä¿®æ£åæ°ç»å®çæµ®ç¹å精度é®é¢
* ä¿®æ£è½¯å é¤
* ä¿®æ£æ¨¡åçæ°æ®åºè¿æ¥
* ä¿®æ£`RedirectResponse
`
* ä¿®æ£Sessionç±»`flush`æ¹æ³
* ä¿®æ£JSONå段åæ°ç»å®
* ä¿®æ£`make:controller`æ令çæ
* ä¿®æ£Cacheç±»ç`get`æ¹æ³é»è®¤å¼
* ä¿®æ£ååç»å®
* ä¿®æ£å
³è模åçå¨æè·åå¨
* ä¿®æ£æ¨¡å`dateFormat`å±æ§æ¹æ³
* ä¿®æ£urlçæ对å¤å
¥å£çæ¯æ
* ä¿®æ£inié
ç½®æä»¶æ ¼å¼çå¸å°å¼è½¬æ¢é®é¢
* ä¿®æ£è·¯ç±å»¶è¿è§£æå
¨å±é
ç½®æ æçé®é¢
* ä¿®æ£è·¯ç±ç¼åé®é¢
* ä¿®æ£å
³è`update`æä½
* ä¿®æ£`Relation::$selfRelation`é»è®¤ä¸º`null`ï¼å¯¼è´`Relation::isSelfRelation()`æ¹æ³æ¥é
* ä¿®æ£`redis`ç¼å驱å¨
* ä¿®æ£äºä»¶æºè½è®¢é
`observe`æ¹æ³
* ä¿®æ£æ¨¡åå段å®ä¹å¯¹æ¥ææ¥è¯¢æ æçé®é¢
* ä¿®æ£Consoleç±»`getNamespaces`æ¹æ³
* ä¿®æ£`where`æ¥è¯¢æ¹æ³ä¼ å
¥Query对象çæ¶å缺å°`bind`æ°æ®çé®é¢
* ä¿®æ£requestç±»`method`æ¹æ³
* ä¿®æ£`route:list`æ令
* ä¿®æ£`Collection`ç±»`load`æ¹æ³
* ä¿®æ£`redis`驱å¨ç端å£ç±»å
* ä¿®æ£`session`æ°æ®åºåå使ç¨JSONå¤ççé®é¢
* ä¿®æ£åç»è·¯ç±å并解æ
* ä¿®æ£æ¨¡åç`hidden`æ¹æ³éèå
³è模åçé®é¢
* ä¿®æ£å
³èæ¥è¯¢å
³èé®ä¸ºç©ºçé误
* ä¿®æ£è¿å204ç¶æç çååºå¤æ
* ä¿®æ£`Request`ç±»`has`æ¹æ³å¯¹`env`å`session`çæ¯æ
* ä¿®æ£`provider.php`æ件æ æé®é¢
* ä¿®æ£å
³èæ¥è¯¢çé¨åé®é¢
* ä¿®æ£validateå©æå½æ°æ¯ææå®éªè¯å¨ç±»
* ä¿®æ£éªè¯ç±»`getValidateType`æ¹æ³
* ä¿®æ£å
¥å£åç¬å¼å¯è°è¯æ¨¡å¼
* ä¿®æ£å è½½Composeråºç¨
### ç¨æ³è°æ´
* 页é¢traceä¸é´ä»¶ä»
å¨è°è¯æ¨¡å¼ææ
* `Socket`æ¥å¿é©±å¨ç§»åºæ ¸å¿
* `PostgreSQL`ã`Sqlite`å`SqlServer`驱å¨ç§»åºæ ¸å¿
ï¼æ¹ä¸ºæ©å±
* åæ¶å
ç½®`think\Controller`åºç±»
* `Yaconf`æ¯æ移åºæ ¸å¿ 纳å
¥æ©å±`think-yaconf`
* å段æé¤æ¹ä¸º`withoutField`æ¹æ³
* åæ¶`useGlobalScope`æ¹æ³å¢å `withoutGlobalScope`æ¹æ³
* æ´æ¹é»è®¤çæçä¸é´ä»¶ä½ç½®
* å è½½é»è®¤è¯è¨å
æ éå¼å¯å¤è¯è¨ä¸é´ä»¶
* `Cookie`ç±»æ¢å¤`get`å`has`æ¹æ³æ¯æ
* `token`å©æå½æ°è°æ´
* å
¨å±è¯·æ±ç¼ååæ°è°æ´
* ç»ä¸ä¸é´ä»¶è°ç¨ä¼ åï¼ä¸æ¯æ`:`åå²ä¼ å
* ç¼åæ°æ®ç»ä¸è¿è¡åºååååå¨
* Cacheç±»rmæ¹æ³æ´æ¹ä¸ºdeleteæ¹æ³
* validateå©æå½æ°è¿åValidate对象å®ä¾ï¼åæ°æ¹å
### åºå¼ç¨æ³
* åæ¶å¤è¯è¨ç`auto_detect`é
ç½®
* åæ¶`session`ç±»ç`auto_start`é
ç½®åæ°å`boot`æ¹æ³
* åºå¼`Where`æ°ç»å¯¹è±¡æ¥è¯¢
* åæ¶æ¨¡åäºä»¶è§å¯è
* åæ¶`JumpResponse`å`success`/`error`/`result`çæ¹æ³åå©æå½æ°
* åæ¶è¡¨è¾¾å¼æ¥è¯¢è§£ææ©å±å`think\db\Expression`ç±»
* åºå¼æ¨¡åèªå¨å®æåè½ï¼ä½¿ç¨æ¨¡åäºä»¶æ¿ä»£
* åæ¶`cookie`ç`prefix`åæ°
* åæ¶ä¸ç³»åä¸æ¨è使ç¨çå©æå½æ°
* åæ¶`optimize:facade` `optimize:model`æ令 æ¹ä¸ºæ©å±æ¹å¼
* åæ¶å½ä»¤è¡æ§è¡URL
* å é¤`Config`ç±»`__get` å `__isset` æ¹æ³
## RC2ï¼2019å¹´4æ22æ¥ï¼
ç¸æ¯è¾`RC1`çæ¬æ´æ°è°æ´è¾å¤§ï¼ä¸»è¦æ´æ°å¦ä¸ï¼
* åºå±æ¶æé对åç¨åä¼åè°æ´
* å¢å WEBåºç¨ç®¡çç±»`Http`
* å¢å åºç¨åå§åæå¡åæå¡æ³¨åæºå¶
* æ¥è¯¢äºä»¶å模åäºä»¶ä½¿ç¨äºä»¶ç³»ç»æ¥ç®¡
* `Session`ç±»éæï¼ä¸å使ç¨PHPå
ç½®ä¼è¯
* `Cookie`ç±»ä»
æ¯æ设置ååå
¥ï¼ä¸åæ¯æ读å
* åæ¶`Config`ç±»çå¨æ设置åè½
* é¨åæ ¸å¿åè½ä¸é´ä»¶åï¼é¡µé¢Traceãå¤è¯è¨ã请æ±ç¼ååSessionåå§åï¼
* åæ¶æ¯ä¾é
ç½®æ件
* å¢å 驱å¨æ¥å£è§è驱å¨å¼å
* æ¹è¿Dbç±»åæ¥è¯¢ç±»
* ç²¾ç®ä¸äºä¸å¿
è¦çç±»åº
* æ¹è¿è·¯ç±æ³¨å
* ç±äºå¼å¸¸çéè¦`View`ç±»æ¹ä¸ºå
ç½®ï¼ä½é»è®¤ä»
æ¯æåçPHP模æ¿
* 大éç»èæ¹è¿åä¿®æ£
## RC1ï¼2019å¹´2æ14æ¥ï¼
* æ¹è¿Urlç±»`build`æ¹æ³
* ä¿®å¤è·åå½å页ç æ°æ®ç±»å
* ä¿®æ£`parseKey`æ¹æ³ä¼ å
¥æ°å¼çæ
åµ
* æ¹è¿`optimize:config`æ令对`declare`ç³æçæ¯æ
* åæ¶URLåæ°æ¨¡å¼é
ç½®
* å¢å `optimize:facade`æ令ç¨äºçæ`facade`ç±»çæ¹æ³æ³¨é
* åæ¶`Query`ç±»ç`extend`æ¹æ³
* åæ¥ç`Expression`ç±»æ´æ¹ä¸º`Raw`ç±»
* å¢å æ°ç`Expression`ç±»ç¨äºè¡¨è¾¾å¼æ¥è¯¢æ©å±
* `Collection`ç±»å¢å `whereLike`/`whereNotLike`/`whereIn`/`whereNotIn`/`whereBetween`/`whereNotBetween`çå¿«æ·æ¹æ³
* Queryç±»ç`raw`æ¹æ³ç§»å¨å°Dbç±»
* åæ¶`Request`ç±»ç`hook`æ¹æ³
* ä¿®æ£`Route::view`æ¹æ³
* ä¼å模åè·åå¨æ¹æ³
* å¤å¯¹å¤å
³èç`pivotDataName`æ¹æ³æ´å为`name`æ¹æ³
* Queryç±»å¢å `partition`/`duplicate`/`extra`æ¹æ³
* æ¹è¿mysql驱å¨æ¯æååºå`duplicate`以åé¢å¤åæ°
* mysql驱å¨ç`insert`æ¹æ³æ¹ç¨æ´æ¸
æ°ç`insert set`è¯æ³
* ä¿®æ£`Event`ç±»`bind`å±æ§å®ä¹
* ä¿®æ£éªè¯ç±»ç`append`ä¸å¤bug
* æ¹è¿`Query`ç±»`update`æ¹æ³æ¯æ读å模åçæ´æ°æ¡ä»¶
* åæ¶æ¨¡åç±»ç`getUpdateWhere`æ¹æ³ç»ä¸ä½¿ç¨`getWhere`æ¹æ³
* æ¹è¿queryç±»ç`fetchArray`æ¹æ³å¤ç
* æ¹è¿è·¯ç±ç±»åæ¶`app`å±æ§
* å¢å `think\facade\RuleName`ç±»
* å¢å `whereFieldRaw`æ¥è¯¢æ¹æ³
* æ¹è¿èªå¨å¤åºç¨å称è·å
* Appç±»å¢å `withEvent`æ¹æ³æ¯æå
³éäºä»¶æºå¶
* æ¹è¿`Dispatch`类对`var_dump`çæ¯æ
* æ¹è¿`hasMany`ç`withCount`èªå
³è
* ä¿®æ£çº¯æ°åæ£æµåæ°ç±»å转æ¢é®é¢
* ä¿®æ£`raw`å©æå½æ°
* `mysql`æ¯æ`find_in_set`æ¥è¯¢
* æ¹è¿`url`æ¹æ³å¯¹èªå¨å¤åºç¨çæ¯æ
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- URL访é®
- 容å¨åä¾èµæ³¨å ¥
- æå¡
- é¨é¢
- ä¸é´ä»¶
- äºä»¶
- è·¯ç±
- è·¯ç±å®ä¹
- åéè§å
- è·¯ç±å°å
- è·¯ç±åæ°
- è·¯ç±ä¸é´ä»¶
- è·¯ç±åç»
- èµæºè·¯ç±
- 注解路ç±
- è·¯ç±ç»å®
- ååè·¯ç±
- MISSè·¯ç±
- è·¨å请æ±
- URLçæ
- æ§å¶å¨
- æ§å¶å¨å®ä¹
- åºç¡æ§å¶å¨
- 空æ§å¶å¨
- èµæºæ§å¶å¨
- æ§å¶å¨ä¸é´ä»¶
- 请æ±
- 请æ±å¯¹è±¡
- 请æ±ä¿¡æ¯
- è¾å ¥åé
- 请æ±ç±»å
- HTTP头信æ¯
- 伪éæ
- åæ°ç»å®
- 请æ±ç¼å
- ååº
- ååºè¾åº
- ååºåæ°
- éå®å
- æ件ä¸è½½
- æ°æ®åº
- è¿æ¥æ°æ®åº
- åå¸å¼æ°æ®åº
- æ¥è¯¢æé å¨
- æ¥è¯¢æ°æ®
- æ·»å æ°æ®
- æ´æ°æ°æ®
- å é¤æ°æ®
- æ¥è¯¢è¡¨è¾¾å¼
- é¾å¼æä½
- where
- table
- alias
- field
- strict
- limit
- page
- order
- group
- having
- join
- union
- distinct
- lock
- cache
- comment
- fetchSql
- force
- partition
- failException
- sequence
- replace
- extra
- duplicate
- procedure
- èåæ¥è¯¢
- å页æ¥è¯¢
- æ¶é´æ¥è¯¢
- é«çº§æ¥è¯¢
- è§å¾æ¥è¯¢
- JSONå段
- åæ¥è¯¢
- åçæ¥è¯¢
- æ¥è¯¢äºä»¶
- è·åå¨
- äºå¡æä½
- åå¨è¿ç¨
- æ°æ®é
- æ°æ®åºé©±å¨
- 模å
- å®ä¹
- 模åå段
- æ°å¢
- æ´æ°
- å é¤
- æ¥è¯¢
- æ¥è¯¢èå´
- JSONå段
- è·åå¨
- ä¿®æ¹å¨
- æç´¢å¨
- æ°æ®é
- èªå¨æ¶é´æ³
- åªè¯»å段
- 软å é¤
- ç±»å转æ¢
- 模åè¾åº
- 模åäºä»¶
- 模åå ³è
- ä¸å¯¹ä¸å ³è
- ä¸å¯¹å¤å ³è
- è¿ç¨ä¸å¯¹å¤
- è¿ç¨ä¸å¯¹ä¸
- å¤å¯¹å¤å ³è
- å¤æå ³è
- å ³èé¢è½½å ¥
- å ³èç»è®¡
- å ³èè¾åº
- è§å¾
- 模æ¿åé
- è§å¾è¿æ»¤
- 模æ¿æ¸²æ
- 模æ¿å¼æ
- è§å¾é©±å¨
- é误åæ¥å¿
- å¼å¸¸å¤ç
- æ¥å¿å¤ç
- è°è¯
- è°è¯æ¨¡å¼
- Traceè°è¯
- SQLè°è¯
- åéè°è¯
- è¿ç¨è°è¯
- éªè¯
- éªè¯å¨
- éªè¯è§å
- é误信æ¯
- éªè¯åºæ¯
- è·¯ç±éªè¯
- å ç½®è§å
- 表å令ç
- 注解éªè¯
- æ项
- ç¼å
- Session
- Cookie
- å¤è¯è¨
- ä¸ä¼
- å½ä»¤è¡
- å¯å¨å ç½®æå¡å¨
- æ¥ççæ¬
- èªå¨çæåºç¨ç®å½
- å建类åºæ件
- æ¸ é¤ç¼åæ件
- çææ°æ®è¡¨å段ç¼å
- çæè·¯ç±æ å°ç¼å
- è¾åºè·¯ç±å®ä¹
- èªå®ä¹æ令
- æ©å±åº
- æ°æ®åºè¿ç§»å·¥å ·
- Workerman
- thinkå©æå·¥å ·åº
- éªè¯ç
- Swoole
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿