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.
本帖由系统于 6年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 19

laravel 都打错了。。 :sweat:

8年前 评论
dividez

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

8年前 评论
dividez

有毒啊兄弟!~~~~

8年前 评论
Destiny

标题打错了。。。。兄弟

8年前 评论
mouyong

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

8年前 评论

foreach 那个应该是判断 $persons 吧

8年前 评论
Summer

排版也是非常的糟糕哈

8年前 评论

person 的复数是 people 哦 :cry:

8年前 评论
mouyong

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

8年前 评论
mouyong

@JokerLinly 嗯,谢谢:blush:

8年前 评论
Corwien

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

8年前 评论
jasonjiang123

小见解

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

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

@jasonjiang123 嗯,:thumbsup:

8年前 评论
mouyong

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

8年前 评论
liyu001989

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

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

8年前 评论

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

8年前 评论

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

7年前 评论

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

7年前 评论

打杂的 @ 某某医学
文章
35
粉丝
63
喜欢
328
收藏
113
排名:37
访问:19.1 万
私信
所有博文
社区赞助商