特别小巧的PHP框架 supermini
openkk
13年前
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中有所体现了;