首页 > php框架 > Laravel > 正文

分享一个Laravel建议写法指南

藏色散人
发布: 2021-05-07 09:12:41
转载
1972人浏览过

下面由laravel教程栏目给大家分享一个laravel建议写法指南,希望对需要的朋友有所帮助!

Laravel 优雅的框架,同时提供了大量灵活并且神奇的写法。但越灵活,在一些方面可能会存在小问题。

以下列出 Laravel 不太建议的写法,仅大家讨论与参考。如果可能的话在评议区说出你的看法吧。

Request 问题

Request 参数可以通过动态属性获取,如以下写法:

$name = $request->name;
登录后复制

该写法非常不建议,原因是如果属性名称为 query 或者 content 之类原本类的属性,就会产生非预期效果。除非你把所有该类的所以关键词都记住(就算你记住所有的属性,你也保证不了下个版本会不会加新的属性),否则你早晚会遇到这个坑。比较不建议使用,建议使用如下方式:

// 可以用这种方式
$name = $request->input('name');
// 或用这种方式
$input = $request->all();
$name = $input['name'];
登录后复制

总结:不使用 request 动态属性。

Model appends

法语写作助手
法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31
查看详情 法语写作助手
class User extends Model
{
  protected $appends = ['is_adult'];
  public function getIsAdultAttribute()
  {
      return $this->attribute['age'] > 18;
  }
}
登录后复制

getXxxAttribute 是一个很用的特性,但如果 model 中自动 append 就会产生很多问题,如你在 select 的时候,没有 age 字段,依然会帮你加上 append 的字段,这有时会带来很多问题。建议不使用 $append 这个属性。在需要的时候,在 controller 层加载这个属性。

// model
class User extends Model
{
  public function getIsAdultAttribute()
  {
      return $this->attribute['age'] > 18;
  }
}
// controller
$user = User::first();
$user->append('is_adult');
登录后复制

总结:不使用 model 的 appends。

Model 的动态属性

// 第1种写法
$user = User::first();
// ?? 此动态属性如果是表字段名称是如 exists 等就会出问题。
$name = $user->name;
// 第2种写法更安全
$user = User::first()->toArray();
$name = $user['name'];
登录后复制

Model 在使用对象时也有动态属性,也同样会产生冲突问题 (一般不太可能触发到),但数据表字段尽可能不出现下关键词。(虽然第 2 种写法更安全,但相信更多人更喜欢第一种写法吧,我们避免数据库字段如下关键词就好了。我也喜欢用第 1 种写法。)

// /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php 
exists,
incrementing
timestamps
wasRecentlyCreated
登录后复制

本文会不定期更新,希望用 Laravel 的人一起分享你们的使用建议。

以上就是分享一个Laravel建议写法指南的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:learnku网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号