Skip to content

Instantly share code, notes, and snippets.

@leapar
Last active September 25, 2016 10:00
Show Gist options
  • Save leapar/fd53ecf9fef9f91c7536a57857a7851c to your computer and use it in GitHub Desktop.
Save leapar/fd53ecf9fef9f91c7536a57857a7851c to your computer and use it in GitHub Desktop.
laravel框架解析

#PHP项目框架选型

  1. 框架采用laravel https://laravel.com
  2. 异步消息处理采用Rabbitmq
  3. 微信框架 http://easywechat.org

#laravel介绍 ##为什么laravel laravel是世界主流php框架,本人这些年采用的php框架有ucenter、thinkphp、cakephp。从封装完整度、维护性、学习成本、活跃度几个方面,laravel都是首选。

##controller 框架基于restful模式进行封装,很少的几行代码就可以实现增删改。store、update、edit、delete,都非常简单,只需要很简单的几行代码就可以完成增删改。

##router 所有框架路由是最基本的功能,laravel有用灵活强大的router功能。通过router可以针对path进行灵活调度到某个函数某个方法,同时可以进行中间件等进行提前预处理。中间件是router的一大块,当然也可以把中间件配置到controller中,常用的中间件有,权限统一认证、登录统一认证。

##模板blade laravel模板采用blade,个人认为blade比vm模板灵活。牛游果项目组采用的是rose+vm。blade具有section,include、yield等等灵活操作。让你非常简单灵活复用html模板。

##丰富的组件 在packagist.org中你可以搜索到非常非常多开源的组件,你想要的大部分都有,简单组装。采用的是composer类似npm、gradle一样的模式,灵活简单。 例如支付宝、微信、地图。当然form表单的封装更加完善,在blade中稍微编写几个代码,form表单就完成了。

##强大的验证组件 在数据增删改时候,经常需要用到数据的验证,是否唯一,是否为空。

$this->validate($request, [
    'title' => 'required|unique:posts|max:255',
    'author.name' => 'required',
    'author.description' => 'required',
]);

通过上面的几行代码,当用户提交数据不合法时候,框架自动报错并在界面上面提示错误信息。不需要一个个进行判断,然后传递数据,再显示错误。一切都是框架自动完成。

###model model是每个框架必须拥有的,laravel的model非常灵活,tablename自动制定数据库表。fillable自动过滤需要保存的字段,最新修改时间,创建时间都是框架自动完成。model里面需要写的,就是表之间的字段关联关系。

###event job event跟job也是laravel里面非常重要的一个功能,在a,b,c,d....函数中都需要进行推送或者修改某个字段,那么这时候就可以采用event进行事件触发,会同步执行一段公共代码,类似数据库的触发器。 job是类似java的batch,代码中需要进行一段耗时的异步操作,这时候需要一个触发一个异步任务。laravel里面有多种异步任务方式,默认的是redis进行订阅发布。嘀嘀买菜中,我采用的Rabbitmq,因为需要消息的ack确认机制以及本地存储。

laravel学习成本低,比thinkphp容易上手。而且组件丰富,是不二之选。laravel针对restful微服务专门独立出了一个轻量级的框架,lumen这也是目前非常活跃,受追捧的微型框架。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment