0

0

7 个值得了解的 Laravel 最佳实践

青灯夜游

青灯夜游

发布时间:2023-01-03 20:24:46

|

1742人浏览过

|

来源于learnku

原创

7 个值得了解的 Laravel 最佳实践

每个 web 开发人员在写代码时都有自己的风格。与此同时,如果我们使用 Laravel 框架,一切都准备就绪,但通常我们在这里误用了术语。 涉及不同的风格问题不大,但我们必须确保我们的代码遵循良好的风格。这意味着我们的代码必须可扩展,可维护和可测试。【相关推荐:laravel视频教程

是什么让我们的代码变得糟糕或者良好?因为PHP是一种面向对象的语言,我们应该遵循面向对象的原则,如 SOLID 设计原则,并考虑使用面向对象机制,如继承,抽象等。此外,Laravel有一个大社区,有时会有一些社区创造的约定。因此,其他遵循这些约定的 laravel 开发人员能够更好地、更快地理解我们的代码。在本文中,我将根据面向对象原则和一些 Laravel 社区约定,在 Laravel 上向你展示7个最佳实践。

1.胖模型,瘦控制器

如果我们有一个非常复杂的查询构造器或原始 SQL语句,我们应该将此查询移动到模型或仓库中。

坏的:

通义万相
通义万相

通义万相,一个不断进化的AI艺术创作大模型

下载
with(['products' => function ($q) {
            $q->whereDate('created_at', now());
        }])
        ->get();

    return view('index', ['partners' => $partners]);
}

好的:

 $this->partner->newProducts()]);
}

class Partner extends Model
{
    public function newProducts()
    {
        return $this->where('email_verified_at', '!=', null)
            ->with(['products' => function ($q) {
                $q->whereDate('created_at', now());
            }])
            ->get();
    }
}

2.服务类中的业务逻辑

与上述第一点相关,我们应该有一个瘦控制器,然后我们应该将所有业务逻辑移动到单独的服务类中。 所以控制器应该只有一个职责,希望我们可以在其他控制器中重用这个服务。

坏的:

update(['last_login' => now()]);

    dispatch(new UserCreated($user));

    // ...
}

好的:

userService->create($request);

    ....
}

class UserService
{
    public function create($request)
    {
       // ...
    }
}

3.Eloquent 查询优于原生 SQL 语句。

使用 Eloquent 进行查询更具可读性,避免 SQL 注入,并且易于维护。

坏的:

好的:

verified()->latest()->get();

4.DRY (Don’t Repeat Yourself)

我们应该考虑将可重用的逻辑/组件部分移动到单独的地方。
在 blade 模板中,我们可以使用组件来重用前端部分。在服务器中,我们可以将逻辑移动到一个单独的服务类、Eloquent scope作用域,甚至可以创建我们自己的包。




DRY



Custom Calendar

5.不要在 Blade 模板中执行查询

尽管在 blade 模板中执行查询是可行的, 但最好不要这么做。

坏的。 将会造成 N+1 问题。

@foreach (User::all() as $user)
    {{ $user->email }}
@endforeach

好的:

$users = User::all(); // Server Query
@foreach ($users as $user)
    {{ $user->email }}
@endforeach

6.使用数据库事务

如果我们有一些复杂而冗长的逻辑/查询,那么我们应该考虑使用数据库事务。通过使用此功能,我们可以在需要时轻松回滚数据库,以确保我们的数据不会保存到数据库中,因此我们确信我们的数据是可靠的。

create($user);

    if (!$response) {
      DB::rollback();
      return;
    }
    // ...
    DB::commit();
 }

7.不要硬编码文本

我们不应该在代码/控制器中硬编码任何文本。这样以后很容易维护和扩展。如果我们想向用户显示消息,我们可以使用翻译,模型/类中的常量来设置任何值或配置文件来保存我们的配置。

trans('user.created'); // 'User Successfully Created'
$types = Product::TYPES; // Const in a Class/Model
原文地址:https://cerwyn.medium.com/7-best-practices-in-laravel-you-should-know-2ed9878293de译文地址:https://learnku.com/laravel/t/67021

更多编程相关知识,请访问:编程视频!!

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2687

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1662

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1523

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

953

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1420

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1235

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1488

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1306

2023.11.13

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 8.5万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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