特別小巧的PHP框架 supermini
Supermini 顧名思義,是一個特別小巧的PHP框架.我的目標是將它的代碼量控制在1000行以內,以便使用者能在1天之內將整個代碼讀完,并理解我的意圖.同時,框架的功能能夠大幅減輕開發人員的工作量;整個框架從ruby on rails 借鑒了許多,同時寫得比較Magic,可能會影響可閱讀性,不過也唯有這樣才能實現很magic的功能; 特別適合懶人.
整個框架主要的類有這些: smChainable:一些具有類似于jquery中$對象一些屬性的類;就是方法的返回值仍然是這個對象本身.不關心方法的返回值,只關注執行這個方法產生的副作用.就提供了一個set方法.當調用未定義的方法時,實質是寫屬性值.比如調用smChainable::table("user"),table這個方法并不存在,因為就調用了smChainable::__call方法用寫這個table屬性了; smDB 花了很大力氣寫的數據庫處理類.替代了上一代中的smTable類; 用法: $obj=new smDB(); $smDB->prepare_dbo(); $smDB->table("users")->select("*")->where("gender='m')->limit("100,10")->rows(); smForm 也是花了一些力氣去寫的一個類;主要是為了幫助生成表單項;也是借鑒rails比較多;看下面的代碼: $userinfo=array("username"=>'xurenlu',"email"=>"xurenlu@gmail.com","gender"=>"m"); $form=new smForm("user",$userinfo); echo $form->caption("username","用戶名:"); echo $form->class("my_txt")->textbox("username"); echo "<hr/>"; echo $form->caption("email","郵箱:"); echo $form->class("email-txt")->textbox("email"); echo $form->submitbox("提交"); echo $form->closeform(); smSqlecho smSql::update( "users", array( "id"=>"111", "name"=>"uxferwe'fdsf", "pass"=>"fdsfdsfu2323\\fsdfdsf/'fsdfsdf\""), "id=9999"); echo smSql::insert( "users", array( "id"=>"111", "name"=>"uxferwe'fdsf", "pass"=>"fdsfdsfu2323\\fsdfdsf/'fsdfsdf\"")); echo smSql::select( "users", "*", "id>9999", "id desc", "limit 100", "age");
smObject 這個類可以說是使用supermini的入口類了,框架已經設定了$sm變量了($sm=new smObject());調它的很多屬性可以直接得到某一種對象; 比如調用$sm->db就直接得到smDB的對象,調用$sm->form就得到了已經預先建立的smForm對象了;
smApplication 使用MVC模式時可以看一下代碼;基本上也都是rails類似的東西;
smCache,主要就兩個函數,get和set,和memcache的使用幾乎沒啥兩樣;
關于URL靜態化: URL的靜態化由以下全局函數sm_gen_url,sm_test_urlencode,sm_urlmap,sm_open_shorturl, sm_get_url_fields, sm_compile_models, sm_handle_url和這三個配置選項:$sm_config["url_routes"],$sm_config["url_maps"],$sm_config["url_namespace"]配合完成; $sm_config["url_routes"]=基本是參照了rails的url routes配置來的,但是又不一樣;$sm_config配置中的相關變量已經在sm_config.php中有所體現了;</pre>