標籤: codeigniter 4

  • Sublime Text3 檢查 Codeigniter4 專案的外掛

    Sublime Text3 檢查 Codeigniter4 專案的外掛

    使用 Sublime Text 檢查 CodeIgniter 4 專案的命名規範與 use 語句。

    在 CodeIgniter 4 開發中,為了提升專案的可維護性,遵守檔案命名規範與 use 語句的正確性是非常重要的。然而,手動檢查這些細節可能耗時且容易出錯。為了解決這個問題,我開發了一款 Sublime Text 外掛,專門用於自動檢查 CodeIgniter 4 專案的命名規範和 use 語句。

    在這篇文章中,我將介紹這個外掛的功能、使用方式、注意事項,以及如何對其進行客製化修改。


    外掛功能(截至 2024-12-13)

    這個外掛的主要功能是檢查 PHP 檔案是否符合 CodeIgniter 4 的命名規範和 use 語句的使用規則:

    1. 檔案命名規範檢查
      • 確保所有 PHP 檔案名稱遵循 PascalCase 並以 .php 結尾。
      • 舉例:MyClass.php 是正確的命名,my_class.php 則會觸發警告。
    2. use 語句檢查
      • 檢查是否所有使用到的類別名稱都已經通過 use 正確引入。
      • 找出未被使用的類別,協助開發者清理多餘的 use 語句。
    3. CodeIgniter 4 專案結構檢查
      • 自動檢測專案是否為 CodeIgniter 4,要求至少包含以下目錄:
        • 必須有:app/writable/
        • 至少存在:public/vendor/

    如何安裝與使用

    1. 下載外掛
    2. 安裝外掛
      • 將外掛放入 Sublime Text 的 Packages 目錄中: Sublime Text > Preferences > Browse Packages 將外掛資料夾解壓縮到上述目錄內。
    3. 保存 PHP 檔案以觸發檢查
      • 在 Sublime Text 中打開 CodeIgniter 4 專案的 PHP 檔案,進行編輯後保存。
      • 外掛會自動檢查檔案並在 Sublime Text 狀態列中顯示結果。
      • 如果發現錯誤,會彈出對話框提醒,顯示具體問題。

    使用注意事項(截至 2024-12-13)

    1. 適用專案
      • 此外掛僅適用於 CodeIgniter 4 專案,需保證專案根目錄存在 .env 檔案,並符合 CodeIgniter 4 的基本目錄結構。
    2. 支援的檔案類型
      • 僅檢查 .php 檔案,其他檔案類型將被忽略。
    3. 檢查邏輯
      • 外掛會移除 PHP 中的註解與引號內容來確保檢查不受干擾,但可能會忽略某些極端情況。例如,代碼中以字串拼接的動態類別名稱。

    如何進行修改

    如果你需要針對專案需求進一步客製化這個外掛,可以參考以下指引:

    1. 修改專案結構檢查邏輯

    • is_codeigniter4_project 方法中,你可以自訂需要檢查的目錄結構: def is_codeigniter4_project(self, directory): required_paths = ["app", "writable"] optional_paths = ["public", "vendor"] for path in required_paths: if not os.path.isdir(os.path.join(directory, path)): return False if not any(os.path.isdir(os.path.join(directory, path)) for path in optional_paths): return False return True

    2. 新增自訂檢查規則

    • 如果需要檢查額外的命名規範或程式碼規範,可以在 check_file_namingcheck_use_statements 方法中新增對應邏輯。

    3. 排除特定情境

    • 若某些專案使用特定的非標準命名方式,可以修改正則表達式來放寬檢查。例如: if not re.match(r"^[A-Z][a-zA-Z0-9_]*\.php$", base_name):

    4. 偵錯模式

    • 在開發或調試外掛時,可以透過 print 將日誌輸出到 Sublime Text 的 Console(`Ctrl+“)。

    結語

    這個 Sublime Text 外掛旨在提升 CodeIgniter 4 專案的開發效率,減少手動檢查的時間成本。如果你有其他需求或遇到問題,歡迎前往 GitHub 儲存庫 提交 Issue 或 Pull Request。

    希望這款工具能夠成為你在 CodeIgniter 4 開發中的得力助手!

    笑死,現在部落格用 AI 幫忙生成,講的比自己清楚。附上連結:

  • PHP Codeigniter 4 框架速度優化

    會選擇 Codeigniter 有一個很大的需求是因為要能快速入手,簡單好用,從 3.x 個位數版本開始,現在推出 4 大改版,結構和其他框架也越來越像。

    最近修改一份無框架的專案程式碼,在不更改業務邏輯、資料庫結構的狀況下,移植到 ci4 上面以後才發現,速度變的奇慢無比。想到要追蹤 ci4 的執行速度,才發現 composer 下來的 core 還挺複雜的阿! 功能強大結果變慢,屠龍的少年,終將變成惡龍呀……。

    於是開始研究 Ci4 優化的方法,這邊記錄下來。

    在優化之前,以兩個檔案讀取作為指標。

    讀取名叫 init 的頁面 2.3 sec

    Ajax 讀取前端設定 JSON 資料 3.41 sec

    處理的動作

    • 在 app/Config/Modules.php 中,把 $enabled 和 $discoverInComposer 設定為 false ,參考文件。( init 頁面 828ms, ajax load settings json 2.11 sec)
    • 同一個檔案中,把 $aliases 設定為空集合。( init 頁面 761.82ms, ajax load settings json 1.8 sec)
    • 在 app/Config/Toolbar.php 中,把 $collectors 設定為空集合。在 app/Config/Events.php 中,有一段標記 ‵Debug Toolbar Listeners.‵ 的程式碼,刪除或註解起來。 ( init 頁面 640.70ms, ajax load settings json 1.54 sec)
    • 在 app/Config/Filters.php 中,預設有幾個 class 開啟,分別是:csrftoolbarhoneypotinvalidcharssecureheaders。這幾個有些是安全設定,自行確認檢查哪些要移除。
    • 檢查 app/Config/Autoload.php 裡面有哪些用不到的,儘量在只需要使用時才用。

    效果顯著。

    init 頁面從 2.3 秒到 683豪秒
    AJAX 讀取前端設定從 3.41 秒到 1.65 秒

    但是無框架的原始程式碼呼叫速度還是非常的快的。在相同資料庫、相同 php 運行環境的狀況下,速度是框架 3 倍以上。

    init 頁面 208.03 豪秒
    AJAX 讀取前端設定 354.94 豪秒

    這沒辦法比,革命尚未成功就是。