Code前端首页关于Code前端联系我们

Laravel 框架很优雅,但是没有建议和建议的编写指南

terry 2年前 (2023-09-25) 阅读数 64 #后端开发

Laravel 是一个优雅的框架,同时也提供了很多灵活神奇的编写方法。但越是灵活,在某些方面可能会出现一些小问题。

以下是Laravel不推荐的写法列表,仅供讨论和参考。如果可能的话,请在评论部分分享您的想法。

请求问题

可以通过动态属性来获取请求参数,比如这样写:

$name = $request->name;

不推荐这种写法,因为如果属性名是原类的属性,比如query或内容,就会出现意想不到的结果。影响。

除非你记住了该类型的所有关键字(即使你记住了所有属性,也不能保证下一个版本是否会添加新属性),否则你迟早会遇到这个坑。

不建议使用。推荐使用以下方法:

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

总结:不要使用动态属性请求。

Model appends

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

getXxxAttribute 是一个非常有用的函数,但是如果自动添加到模型中会导致很多问题。例如,如果您选择没有年龄字段,则仍会为您添加append字段。这有时会导致许多问题。建议不要使用 $append 属性。如有必要,请在控制器层加载此属性。

// modelclass User extends Model{  public function getIsAdultAttribute(){      return $this->attribute['age'] > 18;  }}// controller$user = User::first();$user->append('is_adult');

总结:没有模特的append。

模型的动态属性

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

模型在使用对象时也具有动态属性,这也会引起冲突问题(通常不太可能触发),但是关键字不应该尽可能多地出现在数据表字段中可能的。 (虽然第二种写法比较安全,但我想更多的人更喜欢第一种写法。我们可以在数据库字段中避免使用以下关键字。我也喜欢使用第一种写法。)

// /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php exists,incrementingtimestamps

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门