特別小巧的PHP框架 supermini

openkk 12年前發布 | 24K 次閱讀 PHP Web框架

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();
smSql

echo  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>

項目主頁:http://www.baiduhome.net/lib/view/home/1331021741265

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!