概述
Spiral Framework 誕生于現實世界的軟件開發項目是一個現代 PHP 框架,旨在為更快、更清潔、更卓越的軟件開發提供動力。
特性
高性能
由于其設計以及復雜精密的應用服務器,Spiral Framework框架在不影響代碼質量以及與常用庫的兼容性的情況下,執行代碼的速度可比拉威爾Laravel或 Symfony框架快達 10 倍。
安全
Spiral Framework 提供了編寫嵌入式安全應用程序所需的所有工具加密, CSRF 保護、cookie 防篡改、RBAC 授權、基于令牌的身份驗證、驗證和更多。
久經考驗
在Spiral Scout的10+年研發和設計驗證中,我們交付了高性能的框架已經為數十個生產應用程序提供服務,并為數百萬人驅動功能用戶。
具備可擴展性
使用用于隊列、GRPC、事件廣播和更多。支持的應用程序服務器包括編寫水平可擴展所需的一切應用。
PSR 兼容
框架實現了大多數 PSR 標準。享受使用您喜歡的工具的靈活性,不用擔心關于 Vendor Lock 或在框架外部使用 Spiral 組件。
優雅的數據映射
Spiral Framework 使用 Cycle ORM 與數據庫通信,Cycle ORM 幫助創建干凈的域層并動態控制數據庫架構。
快速應用開發且對集成開發環境友好
Spiral Framework 經過優化,可在現代 IDE 中實現最佳使用,可與智能腳手架以及原型設計,以便在不犧牲代碼質量的情況下實現快速開發。
解鎖可能性
擺脫單一的棧式編程,輕松地將螺旋框架Spiral Framework與任何 PHP 庫進行集成,或者利用 Go 語言擴展其功能。通過將豐富的業務層與快速的并發編程相結合來提升開發效率。
通用和模塊化
該框架不會限制你的設計能力,你可以創建模型 - 視圖 - 控制器(MVC)架構的應用、命令與查詢職責分離(CQRS)架構的應用、事件驅動型應用以及命令行界面(CLI)應用。只需安裝你所需的依賴項即可。
快速開始
確保您的服務器配置了以下 PHP 版本和擴展
-
PHP 8.1+ 64bit
-
mb-string
擴展 -
socket
擴展 -
curl
擴展 -
zip
擴展
安裝
安裝程序的安裝過程非常簡單易用。您可以使用以下命令創建新項目:
composer?create-project?spiral/app?tinywan-spiral-app
您將看到以下輸出:
Creating?a?"spiral/app"?project?at?"./tinywan-spiral-app"
Installing?spiral/app?(3.7.0)-?Downloading?spiral/app?(3.7.0)-?Installing?spiral/app?(3.7.0):?Extracting?archive
Created?project?in?/var/www/webman/tinywan-spiral-app
>?Installer\Internal\Installer::install_____?????????_??????????????_/?____|???????(_)????????????|?||?(___???_?__???_??_?__??__?_?|?|\___?\?|?'_?\?|?||?'__|/?_`?||?|____)?||?|_)?||?||?|??|?(_|?||?||_____/?|?.__/?|_||_|???\__,_||_||?||_|Which?application?preset?do?you?want?to?install?[1]?Web[2]?Cli[3]?gRPCMake?your?selection?(default:?1):?1Create?a?default?application?structure?and?demo?data?[1]?Yes[0]?No[?]?HelpMake?your?selection?(default:?1):?1Do?you?need?Cycle?ORM?[1]?Yes[0]?NoMake?your?selection?(default:?1):?1Loading?composer?repositories?with?package?information
安裝應用程序后,將在項目的根目錄中生成 README.md 文件,其中包含有關如何啟動應用程序服務器以及如何運行應用程序的說明。
運行 Server
要啟動應用程序服務器,請執行:
./rr?serve
開源技術小棧默認端口是:
8080
。我這里8080
端口被占用,所以我使用8204
端口。端口修改配置.rr.yaml
文件。
服務啟動后,您將看到以下輸出:
2025-01-13T01:35:18+0000????????DEBUG???rpc?????????????plugin?was?started??????{"address":?"tcp://127.0.0.1:6001",?"list?of?the?plugins?with?RPC?methods:":?["lock",?"informer",?"resetter",?"app"]}
2025-01-13T01:35:27+0000????????DEBUG???server??????????worker?is?allocated?????{"pid":?2847,?"max_execs":?0,?"internal_event_name":?"EventWorkerConstruct"}
[INFO]?RoadRunner?server?started;?version:?2024.3.1,?buildtime:?2024-12-20T02:15:59+0000
[INFO]?sdnotify:?not?notified
2025-01-13T01:35:27+0000????????DEBUG???http????????????http?server?was?started?{"address":?"0.0.0.0:8204"}
2025-01-13T01:35:31+0000????????DEBUG???server??????????req-resp?mode???{"pid":?2847}
2025-01-13T01:35:39+0000????????DEBUG???server??????????req-resp?mode???{"pid":?2847}
2025-01-13T01:35:39+0000????????INFO????http????????????http?log????????{"status":?200,?"method":?"GET",?"URI":?"/",?"URL":?"/",?"remote_address":?"172.18.0.1:51978",?"read_bytes":?0,?"write_bytes":?10873,?"start":?"2025-01-13T01:35:36+0000",?"elapsed":?2708}