Laravel 菜鸟晋级之路

2017年11月16日 215点热度 0人点赞 0条评论

用Laravel也有三四个月了,虽然是兼职开发,但是使用的频率非常之高,毕竟是产品化的一个项目。

在这期间,也踩了无数的坑,走了很多弯路,所以准备把最近的感悟记录下来,方便后来者。

第一阶段:简单的增删改查

这是最开始接触Laravel的一个阶段。如果有PHP经验,那么应该能很快找到MVC的路径,然后驾轻就熟的开始写起来。虽然还显得有些笨拙,不过很快就能做出一些内容了。如果没有PHP经验,还是不建议轻易入坑的。毕竟连语法都不熟悉,很难上手。

Laravel由于支持大量的命令行生成代码,可能对于thinkPHP或者其他框架的用户并不太友好,不过当你需要创建大量文件的时候,还是会觉得很好用的。即使是简单的增删改查,也建议多用命令行,比如最好用的php artisan make:model Foo -m,直接创建了model和对应的migration。

第二阶段:数据库factory和seeder

开发了比较多的功能之后,会发现需要大量的测试数据,这时候factory和seeder就该大显身手了。当然这两个货并不怎么好搞定,faker的功能非常之多,factory中创建各种faker,然后在seeder中调用,学会这些,你就又升了一级。

faker对中文支持也很好,可以生成用户名,英文名,中文名,中文公司名,中文的企业口号,大陆电话号码等。数据填充的文档faker的文档

第三阶段:表单剥离

最开始表单校验都是直接写在controller中,如果了解一下request相关的内容,可以将表单验证和数据创建更新,都放在单独的request类中,php artisan make:request FooForm即可创建一个表单验证器。我的习惯是,把新建和更新的验证,都写在一起,这样方便对照,以免出错。

表单类支持自动验证登录,自动验证规则,支持很多种规则还支持自定义规则(php artisan make:rules balabala),还可以用messages函数,返回自定义错误信息。表单相关的文档

第四阶段:自动化测试

Laravel从5.5才开始支持浏览器自动化测试dusk,不过功能直接就登峰造极了,各种assert让你眼花缭乱,而且易用性也在我用过的各种浏览器测试框架中首屈一指。如果没有接触过自动化测试或者浏览器测试,建议先尝试一下其他框架,python、nodejs也都是有这方面工具的,做http测试和浏览器什么的。传统的人工测试,实在有点落后了。

dusk最好用的,一个是支持分页,也就是把一部分内容抽象到单独的类里面;还有一个是有好多内置函数,不需要写一大堆选择器,比如type输入可以使用input的名字,press使用button的名字,clickLink使用链接的名字,还能自定义高级选择器;另一个是遇到错误可以自动截图,简直是神操作,可以直观看到出错的页面。测试相关的文档(https://d.laravel-china.org/docs/5.5/dusk)

第五阶段:设计模式

我目前刚达到这一阶段,今天才刚刚理解依赖注入的用法,才开始用上repository模式,之前数次重构,都没有成功。Laravel真正的神奇之处就在这里,你可以在controller之外的地方注入request对象,从而把大量的逻辑都从controller和model中剥离出来。在这之前的一阵子,我一直在用presenter模式,把视图中涉及到一些逻辑的代码都提取出来,以便复用。

项目越来越大之后,MVC已经完全不够用了,controller乱成一团,model里也有好多逻辑代码,view里有很多判断和计算。这时候就需要好好设计一下骨架了,比如presenter、repository等,service模式还没用过,后续可能会使用吧。Laravel中大型项目架构(http://oomusou.io/laravel/laravel-architecture/#Presenter)


相关文章推荐


使用 Docker 搭建 Laravel 本地环境

php + Laravel 实现部署自动化

PHPer、Laravel 面试可能会遇到的问题及答案

使用桩件 (Stub) 解决 Laravel 单元测试中的依赖


相关讲堂推荐

图片

主要内容

  • Laravel 简介

  • Laravel 与其他框架的不同

  • 为什么你值得掌握 Laravel

  • 在本课程中你将学到什么

  • Laravel 的主要模块

  • 安装 Laravel

  • 建立一个 Laravel 项目

  • Laravel 的目录结构介绍

系列课程简介

系列课程以 Laravel 框架为核心,从 Laravel 的基础架构和设计思想出发,逐一介绍 Laravel 的各主要模块,并提供上手教学。

系列课程共十五篇,囊括对 Laravel 核心和各模块的介绍和主要功能上手,并深入代码,诠释框架设计思路。

系列课程的意义并仅仅在于向大家介绍 Laravel ,同时也将通过 Laravel ,让大家体会优雅的程序结构设计和编程之美。

17340Laravel 菜鸟晋级之路

root

这个人很懒,什么都没留下

文章评论