分享一个Laravel建议写法指南

2022-05-15 0 203

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

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

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

Request 问题

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

$name = $request->name;

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

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

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

Model appends

class User extends Model{  protected $appends = ['is_adult'];  public function getIsAdultAttribute()  {      return $this->attribute['age'] > 18;  }}

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

// modelclass 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,incrementingtimestampswasRecentlyCreated

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

【声明:根据2013年1月30日《计算机软件保护条例》2次修订第17条规定: 为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存 储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬! 鉴于此,也希望大家按此说明研究软件!】
本站所有源码尽量保证原汁原味,如有特殊情况会作出声明及标注,网站资源不做任何二次加密(原版加密除外,不影响程序使用的不会做解密处理),方便您更好的学习参考。 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

即刻码站__国内靠谱的站长资源下载平台 php教程 分享一个Laravel建议写法指南 https://www.jike1995.com/36482.html

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务