SYMLEX旨在通過提供一個以示例來促進最佳實踐的工作系統來簡化敏捷Web開發:
自2014年最初發行以來,它已被證明非常適合快速構建微服務,CLI和單頁應用程序。它包含從測試到表格和數據庫抽象的工作示例。只需刪除您不需要的內容即可。
內核很小,僅創建一個服務容器,用於在其上下文中引導您的應用程序。與其他框架相比,使用單個容器進行配置和依賴注入可以降低複雜性,並導致性能提高。它還可以防止開發人員在不了解它們的情況下無意識地安裝捆綁包。結果較不膨脹,更簡單,更可維護和可測試的代碼,這對於敏捷開發至關重要。
盡可能使用普通類,以避免供應商鎖定並啟用框架獨立代碼重複使用。請參閱“權衡”。
您可以將基於PHP的後端與任何JavaScript庫或REST客戶端相結合。前端樣板板是為了方便的,可以直接通過WebPack和Vuetify構建令人印象深刻的單頁應用程序,請參見Demo.symlex.org。還包括一個命令行應用程序的工作示例。
我們的完整框架文檔可以在docs.symlex.org上找到。圖齊·劉(Tuzi Liu)為我們保留了中文翻譯。
注意:https://github.com/symlex/symlex-core包含內核和路由器作為可重複使用的組件。
在開始之前,請確保系統上安裝了PHP 7.3+,作曲家和Docker(Mac OS X Howto)。運行get-composer.sh以在Linux上本地安裝composer 。您可以根據現有的Dockerfile來設置自己的運行時環境,而不是使用Docker。此外,您將需要一個數據庫和nodejs和npm來構建前端。
步驟1:運行composer創建一個新的Symlex項目:
composer create-project symlex/symlex myapp
作曲家將要求配置值為您生成app/config/parameters.yml 。
確保storage/cache是可寫的,以便可以由應用程序創建緩存文件。
步驟2:使用docker-compose啟動Roadrunner和Mariadb:
cd myapp
docker-compose up
注意:此配置僅用於測試和開發目的,有關詳細信息,請參見Docker-Compose.yml中的評論。出於安全原因,如果您使用其他用戶運行Docker,則可能需要調整它。在OS X上,Docker的當前版本在從主機的文件系統中執行PHP確實很慢。 docker-compose up -d在後台運行Docker,但是在這種情況下,您不會看到有用的日誌消息。
步驟3:讓初始化數據庫並為您構建前端組件:
make terminal
make all database
要驗證一切都在起作用,請運行make test 。
注意:您還可以使用此方法以稍後執行其他CLI命令。製造應預先安裝在典型的UNIX開發環境中 - 否則,您可能必須先通過Xcode-elect上安裝Xcode命令行工具,或者通過xcode-select --install或通過在Linux上添加build-base或build-essential軟件包。 Makefile包含所有目標的列表。
成功安裝後,打開網站http:// localhost:8081/,並使用密碼passwd登錄為[email protected] 。
YAML文件位於app/config中的基於參數和服務的應用程序。主配置文件是app/config/web.yml和app/config/console.yml 。
如果將localhost-debug添加到您的/etc/hosts並使用此訪問網站,則將加載到調試模式(您將在錯誤頁面上看到堆棧跟踪和其他調試信息)。
MailHog用戶界面可在http:// localhost:8025/。它可用於接收和查看系統自動發送的郵件,例如創建新用戶時。
如果您想構建一個更輕巧的應用程序,請查看我們的其他示例:
完整文檔:https://docs.symlex.org/en/latest/framework/
Symlex現在包括RoadRunner(高性能PHP應用程序服務器)作為NGINX的替代方案。當您構建Docker映像時,它將自動下載。
我們的Symlex> = 4.4.0的安裝說明對於以前的發行版無法使用,因為它們仍然使用nginx和php-fpm。現在有一個由Roadrunner提供支持的單個app服務,而不是web和php 。如果您喜歡NGINX,則可以使用較舊的版本或將上一個配置複製到新版本。我們的一些示例應用程序也使用nginx。
Symlex由Michael Mayer維護,旨在通過提供以身作則來促進最佳實踐的工作系統來簡化敏捷的Web開發。邁克爾(Michael)於2001年發布了他的第一個PHP框架,過去曾與各種主要框架供應商合作。沒有其他開發人員的許多先前工作,建立這種情況是不可能的。感謝那些和所有貢獻的人!
選擇是生產力的敵人。換句話說,如果您的解決方案可以完成所有事情,並且對任何事情沒有任何意見,那麼它就無法解決。 - Asim Aslam
如果您有任何疑問,需要商業支持或只是想打個招呼,請隨時發送電子郵件至[email protected]。我們歡迎任何形式的貢獻。如果您有錯誤或想法,請在打開問題之前閱讀我們的指南。
很明顯,PHP框架性能主要取決於每個請求必須執行的代碼行。雖然Symlex被設計為簡單而精益,但良好的性能是這種方法非常重要的副產品。
最好的代碼不是代碼。沒有代碼的地方,沒有錯誤。沒有API可以學習。沒有尷尬的UI。最好的重構是刪除。 -埃里克·埃利奧特(Eric Elliott)
正如PhpBenchmarks.com發布的那樣,與其他常見的PHP框架相比,REST請求快40%以上:
請注意,這些響應時間是在快速服務器硬件上以完全優化的生產模式測量的,只有5個並發請求。實際上,在絕對時間方面的差異可能會更大。也應考慮記憶消耗:
你為什麼要關心?首先,您的用戶會喜歡它。根據經驗, 100毫秒是讓他們感到系統即時反應的限制,這意味著除了顯示結果外,無需特殊反饋。總響應時間還包括網絡(〜25 ms),瀏覽器和其他開銷,這僅在實現實際業務邏輯的100毫秒中僅留下一小部分。其次,您將為服務器基礎架構節省大量資金,並且隨著測試的運行速度,開發人員的生產力更高。
Symlex於2014年作為簡單的Silex樣板開始,因為Silex本身並不帶有“標準版”,它將您指向正確的方向。 Sensiolab(兩個框架的創建者)建議使用Silex代替Symfony,作為Symfony + Fosrestbundle的輕量級替代品,用於快速構建高性能的REST服務和單頁Web應用程序。
很快注意到,對於來自Symfony的開發人員而言,Pimple(Silex隨附的服務容器)感到很麻煩,並且很難重複使用現有代碼。此外,許多Silex代碼示例甚至是現實世界的應用程序都從代碼的所有部分(不僅是框架本身)訪問了服務容器,這些框架本身會繞過控制的反轉並導致尷尬的可檢驗性。因此,Symlex促進了嚴格使用依賴注入,並將全面服務容器的便利性與微型框架的速度相結合。
如今,Symlex擁有自己的路由組件(基於Symfony 4),並且不再使用Silex。事實證明,該框架對於大量不同的應用程序很有用。其中一些以前是基於常規的符號內核,並且進行了更改,因為它們在復雜性上淹沒了,並且在開發模式下的響應時間高於30秒。 Symlex使他們回到了正軌,而他們現有的代碼群沒有重大更改。
Symlex是一個完全由志願者運行的非營利項目。歡迎您通過GitHub贊助商為我們提供支持,尤其是如果您在使用我們的軟件方面需要幫助時。他們將與第一年的每筆捐款相匹配。
如果您喜歡這個項目,請留下明星,它為繼續前進提供了其他動力。非常感謝! <3