QueryPHP V1-beta.5 改進 ORM 設計體驗

xiaoniuge發表於2019-09-10

QueryPHP v1.0.0-beta.5,這個版本主要改進 ORM 和大量細節的優化。

關於 QueryPHP

QueryPHP 是一款現代化的高效能 PHP 漸進式協程框架, 我們還是主要面向傳統 PHP-FPM 場景,以工程師使用者體驗為歷史使命,讓每一個 PHP 應用都有一個好框架。

百分之百單元測試覆蓋直面 Bug,基於 Zephir 實現框架核心常駐,依託 Swoole 協程提升業務效能,此刻未來逐步漸進。 我們的願景是 USE LEEVEL WITH SWOOLE DO BETTER, 讓您的業務撐起更多的使用者服務。

更新日誌

  • 【framework】將底層 redis 服務拆分出來註冊到 IOC 容器,可以方便使用
  • 【framework】刪除自己的 dd,dump 除錯函式,Symfony 自帶不需要再弄了。
  • 【framework】移除全域性函式 app,hl 助手函式,由靜態代理實現 App(別名 Leevel)來,App::path(),App 可以訪問 IOC 容器中的方法 App::make('request')。
  • 【framework】刪除代理中所有介面設計 \Leevel\Kernel\Proxy\IApp ,刪除元件中的 Proxy 改為用 @method 來實現 IDE helper,並內建一個用於生成這樣的命令工具自動生成。
  • 【framework】優化 swoole 熱過載程式碼,利於測試。
  • 【framework】改進系統異常處理元件,例外將系統內建異常改為 abstract 方便業務層繼承更好地處理異常,新增一個業務處理異常 \Leevel\Kernel\Exception\BusinessException,異常響應也會經過中介軟體處理。
  • 【framework】核心 kernel 和路由支援對 CORS options 請求的處理,利用自定義中介軟體輕鬆處理跨域訪問問題,分拆路由繫結解析方法,程式碼更清。
  • 【framework】關聯模型,改進 ORM 關聯查詢源值為空的特殊處理 ,不再執行後續查詢,減少資料庫查詢,修復巢狀關聯預載入查詢未執行到的 BUG。
  • 【framework】為各個元件助手函式新增一個靜態訪問,分拆各個組手函式到單獨的檔案方便 f 呼叫。
  • 【framework】實體新增更多 const 如 CONSTRUCT_PROP_WHITE,MIDDLE_SOURCE_KEY 避免寫死實體一些約定的名字。
  • 【framework】資料庫 PDO 查詢改進,該是數字就返回數字,不再全部返回字串。
  • 【framework】查詢新增 where('foo', '=', null) 的支援,處理非常特殊場景,以前直接報錯。
  • 【framework】改進實體 \Leevel\Database\Ddd\Entity toArray 設計,現在 null 會被自動忽略。
  • 【framework】改進實體 \Leevel\Database\Ddd\Entity 屬性相關設計,withProps,withProp,hasProp,prop 來訪問。
  • 【framework】改進實體 \Leevel\Database\Ddd\Entity 軟刪相關設計,實體一旦定義了 const DELETE_AT,系統查詢和刪除自動走軟刪除,也可以通過 withSoftDeleted 查詢包含軟刪除的資料,forceDelete 強制刪除。
  • 【framework】改進實體 \Leevel\Database\Ddd\Entity 中查詢實體 find($id) 改為 findEntity($id),更容易理解,例外可以避免和 find() 查詢使用理解衝突。
  • 【framework】修復 redis 連線池連線 PHPRedis 驅動支援重連。
  • 【framework】驗證器會自動轉換驗證引數 not_between:1,5 為 int 和 float,以便於框架實現統一強型別的整體方向,例外資料庫唯一驗證 \Leevel\Validate\UniqueRule 自動識別 int 和 float,避免資料庫查詢出現轉換型別而不再走索引影響效能。
  • 【framework】改進實體 \Leevel\Database\Ddd\Entity 查詢設計,去掉查詢魔術方法,__call 和 ___callStatic 被遮蔽,所有查詢均需要通過靜態入口 select(別名 find,保留致敬 QeePHP 習慣),meta(保留致敬 QeePHP 習慣) 發起,再加上 ide helper 支援,完美支援 IDE。
  • 【framework】改進實體連線 \Leevel\Database\Ddd\Entity 切庫設計,由每個實體自己實現 withConnect 和 connect,更加更新可控,提供切庫安全沙盒 connectSandbox。
  • 【framework】採用 PDOStatement->debugDumpParams() 來獲取最後的 SQL,同時在 debug 元件將 SQL 寫入日誌方便開發除錯。
  • 【framework】事務工作單元 \Leevel\Database\Ddd\UnitOfWork 增加對軟刪除」強刪除的支援,也包含倉儲對此的調整 \Leevel\Database\Ddd\Repository。
  • 【framework】修復並刪除實體和倉儲中的 flushed 已經重新整理過資料的特性,無必要。
  • 【tests】新增 10 多例 swoole 相關的測試用例和其它,單元測試 3080 多例,斷言 10000+。
  • 【application】QueryPHP 自身是一個基於 IViewUI 的標準後臺,自帶基於資源的許可權系統,由於框架大量調整後臺做了相應的調整以便於執行。
  • 【application】QueryPHP 自身是主要引入 Workflow 來改善 curd 操作,將查詢併入到服務中來。

RoadMap

  • 【framework】Beta 4-6 主要是對 Swoole 4 最新版的協程完善支援。
  • 【framework】RC 版本會凍結計劃功能,只修復 BUG、單元測試 和文件完善。
  • 【framework】v1.0.0 正式版本將隨 PHP 7.4 版本後釋出 https://wiki.php.net/todo/php74,計劃是在 2019.12 釋出。

聯絡方式

https://www.queryphp.com

QQ 群 288751294

Email: 635750557@qq.com

幫助我們

QueryPHP 是在 2016 年 10 月開始基於一個我早年的 PHP 框架 DoYouHaoBaby 框架開發的,這個早年的框架是我在 2010 年 7.8 月開始的。

如果你覺得可以,可以推薦朋友來試用一下,關注一哈,希望吸引到有興趣的一起開發,文件基於單元測試加註釋來自動化的比較簡單。

2010-present by Xiangmin Liu

相關文章