## 介紹
她的名字來自電影《異星戰場》里那個速度極快的狗狗(真的很快) - 烏拉(wula),wulaphp和她一樣快。
她是一個簡單、小巧、高效、快速、靈活、模塊化的輕量級`PHP MVC`開發框架;
她是一個學習成本極底,任何人都可以快速上手,只需專注于業務開發的框架;
她是一個站在前輩肩膀上的新框架,集前輩優點于一身,時刻將性能、簡潔、易用做為最高設計原則。
她遵循`MIT`開源許可協議發布,放心使用。
她自身仍在快速發展中,生態環境也在蓬勃成長。
* 歡迎參與項目維護:
1. [修訂記錄](https://github.com/ninggf/wulaphp/blob/v2.0/changelog.md)
2. [貢獻者名單](https://github.com/ninggf/wulaphp/graphs/contributors)
* 生態環境
1. [wulacms](https://github.com/ninggf/wulacms)基于wulaphp的CMS系統.
2. [jqadmin](https://github.com/ninggf/wula_assets_jqadmin/tree/v2.0)后臺界面UI
## 特性
* 小巧,她是一個簡單的基于MVC設計模式開發的框架。
1. 她是一個composer包,可以通過composer進行引用
2. 她只依賴`psr/log`與`smarty/smarty`這兩個第三方庫
3. 高效的類懶加載機制
* 基于插件(plugin)機制提供無限擴展性.
* 利用模塊(module)來合理組織你的應用,大大提高代碼重用率.
* 提供擴展(extension)機制,將通用功能高度內聚,大大提高代碼重用率.
* 允許自定義View模板,用你最熟悉的模板,一切都是那么親切~
1. 內置Smarty,Xml,Json,PHP等
* 支持Annotation(注解)讓編碼不那么死板。
1. 權限控制
2. 布局配置
3. 其它數據...
* 基于[Trait](http://php.net/manual/zh/language.oop5.traits.php)機制為控制器(Controller)提供自定義特性:
1. `SessionSupport`: Session支持
2. `PassportSupport`: 通行證支持,依賴`SessionSupport`
3. `RbacSupport`: Rbac權限支持,依賴`PassportSupport`
4. `CacheSupport`: 緩存支持
5. `LayoutSupport`: 布局支持(僅限Smarty模板)
6. ...更多自定義特性
* 適度封裝數據庫訪問(Table,View)和簡易的ORM.
1. 支持多數據源
2. 像寫SQL一樣操作數據庫(鏈式操作)
3. 集成驗證特性
4. 事務處理透明
5. ORM支持一對一,一對多,多對多關系
6. ORM支持預加載與懶加載機制
* 支持所見即所得的URL路由及基于插件的URL路由自定義功能.
1. 支持子模塊
2. 支持默認模塊
3. 支持路由表
4. 支持URL別名
5. 支持**自定義的路由器**
* 支持多語言(國際化)
1. 可以根據語言自動選擇模板
* 基于`apc`,`yac`,`xcache`提供運行時緩存,讓應用在產品模式(`pro`)下飛起來.
1. 類路徑緩存
2. 配置緩存
* 基于redis提供分布式部署支持.
* 內置基于`Redis`的分布式鎖.
* 基于redis或memcached提供緩存支持.
1. 可通過插件來自定義不同的緩存支持
* 提供`artisan`工具,告別手工腳本,并內置以下命令:
1. `service` 命令,讓你的腳本在后臺運行, 支持三種類型:
* `cron` 精確到秒的定時任務
* `script`或`parallel` 同時運行多個腳本
* `gearman` Gearman Worker
2. `run` 同時運行多個腳本
3. `cron` 精確到秒的定時任務
4. 你自己實現的命令
## 適場景
**wulaphp**是通用WEB開發框架,她是高性能、模塊化、可擴展的PHP MVC框架,用她可以開發任意類型的WEB應用。
內置的分布式、緩存等特性讓她可以更好的應對高并發應用;模塊化讓她應對大規模應用易如反掌。
用她搞個CMS([wulacms](https://github.com/ninggf/wulacms))、論壇、電商、RESTful API服務就是小菜一碟。
## 技術交流
歡迎加入 **wulaphp** 技術交流 QQ 群,分享 **wulaphp** 資源,交流 **wulaphp** 技術。
* QQ 群 I 371487281
> 如果有任何問題或建議請到[issues](https://github.com/ninggf/wulaphp/issues)提交。
## 鼓勵項目
* 到[Github](https://github.com/ninggf/wulaphp)給我們一個star ^_^
* 將**wulaphp**介紹給你身邊的朋友 ^_^
* 直接fork,然后提交你的`pull request`。