我喜欢(?ω?)laravel但是快速简洁开发小项目太麻烦了,试试Lemon吧。Lemon是一个现代PHP框架,它使用composer来管理组件依赖关系。如何使用Lemon安装前面说了Lemon是通过composer加载的。第一步,使用composer安装mkdirlemoncdlemoncomposerrequirechanywn/lemon第二步,新建一个index.php文件require'vendor/autoload.php';useLemon\Route;Route::get('/',function($请求,$response){return$response->write('Hellolemon');});Route::run();第三步,执行内置服务器php-Slocalhost:4000接下来,打开浏览器访问http://localhost:4000Lemon的功能路由Lemon中的路由是通过匹配URL模式和回调函数来完成的。Route::get('/',function($request,$response){echo'index';});当然,Route::get('/','hello');functionhello($request,$response){echo'index';}请求方法Route是路由模块的一个静态类,可以通过执行route类的各种静态方法来响应特定的方法。Route::get('/method/1',function($request,$response){echo'我收到一个GET请求';});Route::post('/method/2',function($request,$response){echo'我收到一个POST请求';});Route::put('/method/3',function($request,$response){echo'我收到一个GET请求';});Route::delete('/method/4',function($request,$response){echo'我收到一个POST请求';});Route::any('/method/5',function($request,$response){echosprintf('我收到了%s请求',$request->method);});哈哈,可以愉快的开发restfulapi了。您可能已经注意到回调函数中的$request和$response。这两个参数是Request和Response类的实例,是回调函数的必需参数。这两个参数很有用,后面会介绍。通配符路由route::get('/hello/(:any)',function($request,$response,$name){echo'hello'.$name;});该方法的第一个参数是匹配RoutingURL,其中(:any)通配符用于匹配任意值。在回调函数中我们使用$name参数来接收这个值。上面的典型路由匹配一个。匹配多个值时,回调函数中的参数位置对应匹配到的值,参数名自定。route::get('/(:num)/(:num)/(:num)',function($request,$response,$year,$month,$day){echo$year.'/'.$month.'/'.$day;});(:num)匹配仅包含数字的段。(:any)匹配包含任何字符的段落。请求(request)获取当前请求的路径和方法,iproute::get('/',function($request,$response){echo$request->path.'
';echo$request->method.'
';echo$request->ip.'
';});接受获取参数localhost:3000/home?name=razor&age=0route::get('/home',function($request,$response){var_dump($request->get());//或者echo$request->get('姓名');});接受post参数route::any('/home',function($request,$response){var_dump($request->post());//或者echo$request->post('name');});判断当前请求类型route::any('/',function($request,$response){if($request->isGET()){echo'CurrentlyaGETrequest';}if($request->isPost()){echo'CurrentlyaPostrequest';}});Response(响应)重定向route::get('/',function($request,$response){return$response->redirect('/home');});返回HTTP状态代码route::get('/',function($request,$response){return$response->statusCode(404);});渲染视图路由::get('/',function($request,$response){返回$response->view('index');});或route::get('/',function($request,$response){return$response->view('index',['title'=>'Home']);});表单验证'required|min:3|max:9','age:age'=>'required|integer','email:email'=>'required|email',];$validator=newValidation($request->get(),$rules);//判断验证是否成功if(!$validator->success){//输出[array]errordebug($validator->errors);}});目前支持的规则有以下几点return['email'=>':属性格式不可用','min'=>':属性长度必须大于等于:min','max'=>':属性长度必须小于:最大值。','required'=>':属性是必需的','numeric'=>':attributemustbeanumber','integer'=>':attributemustbeaninteger','alpha'=>':attributemustonlycontainalphacharacters','alpha_dash'=>':attributemustonlycontainletters,'alpha_dash'=>':属性必须只包含字母,numbers,Dashes','alpha_num'=>':attributemustonlycontainlettersandnumbers'];有兴趣欢迎扩展验证程序,如httpurl、ip等,数据库操作数据库操作类的命名空间在Lemon\Database;基于Pdo的数据库链式查询配置Lemon\Database::set(['driver'=>'mysql','host'=>'localhost','port'=>'3306','username'=>'root','password'=>'','数据库'=>'','字符集'=>'utf8']);基本用法示例'mysql','主机'=>'localhost','端口'=>'3306','用户名'=>'root','密码'=>'','数据库'=>'','字符集'=>'utf8']);Route::get('/',function($request,$response){$users=Database::table('users')->get();});Route::run();get方法有一个参数,默认为*,执行成功后返回一个数组。从数据表中获取单个列或行如果只需要从数据表中获取一行数据,可以使用第一种方法。此方法将返回单个关联数组:$user=db::table('users')->where('name','John')->first();echo$用户->名字;如果你不需要整行数据,你可以带一个参数从单个记录中获取单个值。这个方法会直接返回字段的值:$name=db::table('users')->where('name','John')->first('name');回声$名字;find子句if你的一个表的主键名刚好叫id,你可以这样找。db::table('users')->find($id);如果它被称为其他东西db::table('users')->find($id,'user_id');orderBy子句orderBy方法允许您按指定字段对查询结果进行排序。orderBy方法的第一个参数是你要排序的字段,第二个参数控制排序顺序,可以是asc也可以是desc:db::table('users')->orderBy('id')->得到();Where子句您可以使用查询生成器实例中的where方法向查询添加where子句。基本的where方法需要3个参数。第一个参数是字段的名称。第二个参数是评估字段所依据的值。第三个参数是运算符,可选参数默认为=,可以是数据库支持的任意运算符。$users=db::table('users')->where('votes',100)->get();$users=db::table('users')->where('votes',100,'>')->get();take子句可以使用take方法来限制查询结果的条数,两个参数第一个是起始位置,第二个是取多少条数据:$users=db::table('users')->取(10,20)->获取();insert方法查询生成器还提供了insert方法,用于向数据表中插入记录。insert方法接收一个包含字段名和值的数组作为参数:db::table('users')->insert(['email'=>'john@example.com','votes'=>0]);执行成功返回受影响的行,失败返回false。自增ID(none)Updates方法当然,除了在数据库中插入记录外,还可以使用update更新已有记录。update方法与insert方法一样,接收字段和值的数组,包括要更新的字段。您可以使用where子句来约束更新查找:db::table('users')->where('id',1)->update(['votes'=>1]);自动递增或自动递减(无)Delete方法查询构造函数也可以使用delete方法从数据表中删除记录。在delete之前,也可以使用where子句来约束delete语法:db::table('users')->delete();db::table('users')->where('votes',100,'>')->删除();实战基于Lemon的博客项目https://blog.codefun.cn/源码仓库https://github.com/chanywn/lemon欢迎贡献代码
