輕量級企業php框架 rare
rare簡介
rare是面向對象的。提倡組件化開發模式,讓開發程序變得輕松簡單。
提供了組件(component)、模板(layout)、過濾器(filter)、路由(router)、類自動加載(class autoload)、靜態資源按需加載、框架核心函數鉤子(hook),讓代碼更容易共用,使用更加方便!
組件
組件機制給我們開發高可定制、重用的程序提供了基礎。
使用組件,頁面就像搭建積木一樣簡單有趣,用簡單的東西可以搭建出豐富有趣的頁面。
布局
簡單明了的模板機制讓我們之用關心當前的模塊視圖,而保證視圖文件簡單明了,修改布局時只需要修改layout文件即可。
同時透明的ajax支持讓我們開發一個有分頁的頁面的時候不需要寫一行代碼即支持普通分頁和ajax支持(SEO友好)。
路由
簡單而又強大的路由功能讓我們程序的地址看上去更加美觀,只需要添加幾行配置即可將整個應用的相關地址統一替換。
url地址的后綴可以自定義,默認為.html
rare的路由可以輕松的生成和解析類似
這樣多城市的地址而其他模塊卻依然能正常訪問。
rare支持一個模塊聲明多條路由規則。當您對您的程序的地址調整時,只需要將新的規則置于就的路由規則的前面即可。這樣新生成的地址是新的,而用戶(以及搜索引擎)依然能正常的訪問到之前的地址。
通過rare提供的hook功能,我們可以不用 修改之前的代碼而對當前已有的url地址進行統一的調整,比如我們的程序中原始的url傳遞的參數為cityid=1,但是路由中我們顯示的是城市的拼音 beijing,有了hook和路由,我們可以將參數進行轉換而程序不用做修改(程序還是統一使用cityid做為參數傳遞,而不用理會城市的拼音),
動作
動作支持rest風格
默認的action執行exeute方法,而executePost方法則為post方法請求時執行而不會執行execute。
每個action單獨一個文件存儲,對應有同名視圖文件(view),團隊開發的時候可以明確分工,極大的方便了開發和避免了文件沖突(多人同時編輯一個文件)。
模塊化的劃分和使之和對應的功能一一對應,即方便了開發,也方便了日后維護,以及SEO友好!
更加全面的偽rest風格:默認不開啟
默認配置文件定義
$config['customMethod']=true;
以使用該功能。 如get 或者post 中有參數method=del,并且 具有executeDel 方法,則該方法會被調用。 控制參數默認為method,也可以是其他的,如配置為
$config['customMethod']='rest';
則rest=del為有效的調用。
過濾器
過濾器機制就是整個程序的一道防火墻,可以在過濾器中進行權限判斷,數據預處理等。
支持在所有動作執行前執行 myFilter::beforeExecute 。(這樣若在系統內部進行內部模塊調整:forward也能進行有效的權限驗證等)
上面就是一個過濾器,非常的簡單。
另外,為了使在服務器內部跳轉時(forward)也支持過濾器,過濾器也支持每次執行execute方法時執行過濾器。
類自動裝載
rare內置了類自動裝載功能,當使用一個類的使用直接使用而無須require(include) 類文件。
該類自動裝載功能非常的獨立,若你需要,可以直接在其他框架(任意php程序)中使用。
1.先引入 rareAutoLoad.class.php
2.注冊功能
$option=array( 'dirs' => '/www/phplib/', //class 從那些目錄中查找,多個目錄使用,分割 'cache' => '/tmp/111111.php', //class path 緩存文件 'suffix' => '.class.php' //需要類自動裝載的php類文件的后綴 ); rareAutoLoad::register($option);
為了提高效率,對class信息進行了緩存(類名=>路徑),以保證只會掃描目錄一遍。當加載時發現是一個新類名時,會嘗試在指定位置重新掃描以加載該類,若類不存在也記錄到緩存文件中。
如此,以讓加載類和 class_exists($class_name,true)的效率達到最優。
文件名必須以英文字母或者數字開頭。
錯誤頁面
錯誤頁面自定義。
包括404、500錯誤的錯誤頁面自定義功能。
默認情況下,出現上述錯誤會是框架默認的一個簡單的錯誤提示頁面。
若模塊 error/e404、error/e500存在,則其會是app默認的錯誤頁面。
可以在app的默認配置文件(appDir/config/default.php)中定義:
鉤子
定制改變、增強框架的默認行為。
cli支持
直接使用命令行運行程序(運行指定的模塊),相當于curl。 編寫腳本直接使用當前程序的類庫而完成一些計劃任務。