1.拥有一个简单的核心Container类,对于很多的php框架拥有的功能如路由请求拦截,视图渲染,权限控制,缓存等都是集成在框架内部实现的,但是laravel框架是独立实现的,这些功能可以理解为服务,通过provider(提供器),注册到核心容器container去实现的.
Application继承Container类,这个类是负责调度和组装各种组件服务的容器,打开config目录里的app.php,里面的provider有很多的服务,如权限,文件,也可以加入一些第三方的服务,实现自动加载类,
优点:
1、代码比较明白易懂,跟英语句子差不多,关键词就是函数,举个例子,获取数据库中某个表的所有数据:
$article=new Article;
$articles=$article->all(); //这样就得到了articles表所有记录的所有字段;
$count = $article->where('class_id','=', 1)->count(); //是不是一看就明白了意思?查找分类id为1的记录,并计算出个数。
- 1
- 2
- 3
这样的例子太多,举例就举这两个。
2、文档非常丰富,社区也是非常活跃,现在全球范围内占有率最高,基本上所有的问题都可以找到答案;
3、大量的第三方开源库(composer收录的超过5500个包),可以快速方便的实现模块功能,第三方优秀的包官方都有详细使用手册。例如:laravel/collective
4、安全机制非常齐全,提交表单的数据验证(验证有差不多80种,能想到的基本都有),提交数据时产生随机_token验证,避免非法提交,能避免跨域攻击;
5、中间件和路由,对访问进行过滤及控制,调用函数类和方法前进行判断请求的合法性,避免非法请求;
6、错误处理机制简单好用,如果出错直接调用$error->all()
,即可输出全部错误,对表单验证尤其好用;
缺点:
1、稍复杂,上手比一般框架要慢;
2、大量引用第三方包,但我们只使用类中的部分方法,代码显得有些冗余;
3、性能与一般框架稍有优势,但比yaf等小型框架效率会低一些。