整理 21 個高星、活躍維護、生產可用的 PHP 開源組件與教程,涵蓋圖表報表、PDF 處理、驗證碼、任務隊列、權限控制、API 文檔生成、圖片處理、日誌、設定管理、加密、快取、郵件、檔案上傳、搜尋、支付、社交登入、即時通訊、測試、部署、程式碼品質、文檔生成,附 Composer 安裝指令與一鍵體驗連結。
| # | 領域 | 推薦組件 | Composer | 特色 |
|---|---|---|---|---|
| 1 | 圖表 | pChart / Chart.js (PHP 封裝) | require "pchart/pchart" | GD 繪製、支援柱狀/折線/餅圖、匯出 PNG/PDF |
| 2 | DomPDF / TCPDF / Snappy (wkhtmltopdf) | require "dompdf/dompdf" | HTML/CSS 轉 PDF、支援中文字體、分頁、水印 | |
| 3 | 驗證碼 | Gregwar/Captcha / Securimage | require "gregwar/captcha" | 圖形/算術/音訊驗證碼、Session 綁定、可自定義干擾線 |
| 4 | 任務隊列 | PHP-RQ (Redis) / Laravel Queue / Symfony Messenger | require "php-rq/php-rq" | 延遲、重試、優先級、失敗處理、Dashboard 監控 |
| 5 | 權限控制 | spatie/laravel-permission / PHP-CAS / Acl (Zend) | require "spatie/laravel-permission" | 角色/權限/守衛、支援團隊/多租戶、Artisan 指令管理 |
| 6 | API 文檔 | swagger-php (OpenAPI 3) / Scribe (Laravel) | require "zircote/swagger-php" | 註解生成 OpenAPI、Swagger UI、Postman 匯出 |
| 7 | 圖片處理 | Intervention Image / Imagine | require "intervention/image" | 縮圖、裁切、水印、濾鏡、支援 GD/Imagick |
| 8 | 日誌 | Monolog (PSR-3) | require "monolog/monolog" | 多 Handler (檔案、Slack、Syslog、Elastic)、處理器鏈 |
| 9 | 設定管理 | vlucas/phpdotenv / symfony/config | require "vlucas/phpdotenv" | .env 載入、型別轉換、驗證、多環境覆蓋 |
| 10 | 加密 | defuse/php-encryption / paragonie/halite (libsodium) | require "defuse/php-encryption" | 對稱/非對稱加密、認證加密、金鑰管理、防時序攻擊 |
| 11 | 快取 | Doctrine Cache / Symfony Cache / Stash | require "doctrine/cache" | PSR-6/16 相容、多後端 (APCu、Redis、Memcached、檔案) |
| 12 | 郵件 | PHPMailer / Symfony Mailer | require "phpmailer/phpmailer" | SMTP/送信隊列/附件/內嵌圖片/模板/多語言 |
| 13 | 檔案上傳 | Flysystem (League) / Uppy (前端) | require "league/flysystem" | 統一介面支援 Local/S3/Azure/GCS/FTP/SFTP、分塊上傳 |
| 14 | 搜尋 | Elasticsearch PHP Client / Meilisearch PHP / TNTSearch | require "elasticsearch/elasticsearch" | 全文檢索、中文分詞、即時索引、高亮/建議 |
| 15 | 支付 | Omnipay / Payum / Yansongda/Pay (支付寶/微信) | require "omnipay/omnipay" | 統一閘道介面、退款/通知/簽名驗證、沙箱測試 |
| 16 | 社交登入 | Socialite (Laravel) / Hybridauth / League/OAuth2-Client | require "league/oauth2-client" | OAuth 1/2、OpenID Connect、Google/GitHub/FB/Line/微信 |
| 17 | 即時通訊 | Ratchet (WebSocket) / Swoole / Laravel Echo + Pusher/Soketi | require "cboden/ratchet" | 長連結、廣播、房間、心跳、擴展至千萬連線 |
| 18 | 測試 | PHPUnit / Pest / Codeception / Infection (變異測試) | require "phpunit/phpunit" | 單元/整合/功能/驗收測試、並行執行、覆蓋率報告 |
| 19 | 部署 | Deployer / Laravel Envoy / Capistrano (Ruby) | require "deployer/deployer" | 零停機部署、並行任務、回滾、多主機、Slack 通知 |
| 20 | 程式碼品質 | PHP_CodeSniffer / PHPStan / Psalm / Rector / PHP-CS-Fixer | require "squizlabs/php_codesniffer" | 編碼標準、靜態分析、型別檢查、自動重構、CI 整合 |
| 21 | 文檔生成 | phpDocumentor / Sami / MkDocs (外部) | require "phpdocumentor/phpdocumentor" | PHPDoc 解析、HTML/PDF/Markdown 輸出、繼承圖、搜尋 |
composer require intervention/image
<?php
require 'vendor/autoload.php';
use Intervention\Image\ImageManagerStatic as Image;
$img = Image::make('public/photo.jpg')
->resize(800, null, function ($constraint) {
$constraint->aspectRatio();
})
->greyscale()
->encode('webp', 80);
file_put_contents('public/photo_thumb.webp', $img);
將常用組件封裝為團隊內部 Composer 套件 (如 mycorp/php-toolkit),統一版本、預設配置、擴充介面,新專案 composer require mycorp/php-toolkit 即可開箱即用,大幅降低重複造輪子與版本地獄風險。