Laravel 的一点经验总结

1. 严格遵守psr规范

记不住的话,请至少遵守如下的内容

  • 逗号前面无空格,逗号后面留一个空格,不要留多了。

  • 左小括号后,右小括号前不要有空格。
    上下内容如果没有必要的关联关系,请空一行。

  • 各种运算符的左右各留一个空格。

  • 优先判断错误,即非正常结果的处理方法优先写在上面。正常流程的执行写在最后。

  • DB 方法不能直接调用 save()

  • 以下内容针对 laravel 的 ORM 而谈论的,如有不合适的地方,欢迎指出,谢谢

:)

2. 查询(1)

  • 查询中的get与all方法返回的是集合。
  • 当没有数据时,返回的是空集合,集合可以在任何时候调用toArray方法,如果查询到的结果为空,得到的是[],可以用 empty() 方法判断是否有数据

3. 查询(2)

  • 查询中的first方法与添加数据的create、insert方法,成功返回的是模。
  • 创建、插入成功返回的是创建插入的那条数据的模型。
  • first如果查不到数据,返回的是null,可用empty判断。
  • 创建和插入,如果失败,会报错(当传入的字段与数据库对不上时)。
  • 如果传入的字段与数据库字段一致,插入或创建失败会返回false
  • 判断是否插入成功,用(! $result)判断,(感叹号和$result)间保留一个空格。判断完成后才可调用toArray。

4. 更新与删除

  • update和delete,destroy方法,返回的是影响行数。
    在laravel中,update方法永远返回大于1的行数,因为updated_at字段总是会被更新。
    如果要避免这种情况,请在模型中关闭laravel的自动维护字段的属性。
  • destory和delete返回的是影响行数,即失败为0,成功为删除行数。

5. 数据解码

  • json_decode($json, 1);方法返回的是 null 或数组,判断是否 json_decode() 成功,用empty 判断。

6. 自定义函数

  • 对于自己的方法,清楚地在注释中标注出所有的返回类型,针对每一种类型进行判断处理。

判断时,使用 === 进行严格判断。
除了非必要情况,请使用严格 === 进行判断,如果需要使用不等于判断,
请使用 !==
严禁使用非严格模式的 != 进行判断

7. foreach

  • foreach() 时,一定要确保能进行,即

    foreach($people as $person) {
     $name[] = $person['name'];
    }
    var_dump($name);

    中的第一个变量 $people 有数据,有数据才让进行 foreach() 。否则程序可能因无数据而报错。

  • 处理方式可进行如下改进处理

$name = [];

if ($people) {
    foreach($people as $person) {
        $name[] = $person['name'];
    }
}
var_dump($name);
本作品采用《CC 协议》,转载必须注明作者和本文链接
Study hard and make progress every day. Study hard and make progress every day.
本帖由系统于 5年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 19

laravel 都打错了。。 :sweat:

7年前 评论
dividez

标题就错了,我怎么看着这么眼睛疼呢

7年前 评论
dividez

有毒啊兄弟!~~~~

7年前 评论
Destiny

标题打错了。。。。兄弟

7年前 评论
mouyong

@Breezess @dividez @Destiny ?,抱歉,敲太快了

7年前 评论

foreach那个应该是判断$persons吧

7年前 评论
Summer

排版也是非常的糟糕哈

7年前 评论

person 的复数是 people 哦 :cry:

7年前 评论
mouyong

@Hanccc :-(抱歉,我英语不好,
@Summer 唔,我中午改改,
@kaelli 2者都应该判断.

7年前 评论
mouyong

@JokerLinly 嗯,谢谢:)

7年前 评论
Corwien

大兄弟,写的不错啊,有些概念的确会搞混淆,收藏了

7年前 评论
jasonjiang123

小见解

if($people && is_array($people)){
   // do something
}
7年前 评论
mouyong

@zyxcba 嗯,你说的没错,集合有4种(或以上)方式判断是否为空,都可以用

@jasonjiang123 嗯,:+1:

7年前 评论
mouyong

@jasonjiang123 不过不是所有的地方都需要那样做。否则会显得麻烦

7年前 评论
liyu001989

在laravel中,update方法永远返回大于1的行数,因为updated_at字段总是会被更新。 如果要避免这种情况,请在模型中关闭laravel的自动维护字段的属性。

不对啊,模型update会先判断是否dirty,有属性更改之后才会更新timestamps。而且最后返回的是true和false啊。

7年前 评论

foreach这个,不是应该判断$people是否为数组吗?
如果$people是非 array 类型的,应该也会报错吧?!

7年前 评论

数组应该有多种判断情况.

6年前 评论

判断是否 json_decode() 成功,还有json_last_error

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!