辅助函数篇


引言

辅助函数在你的 Laravel 项目中可以起到极大的作用。它们以一种清晰、简洁的方式简化了你项目中的代码。Laravel 默认提供了许多辅助函数,如 dd()abort()session()。但随着你的项目开始发展,你可能会发现自己希望添加自己的函数。

在这一篇教程中,我们将讨论如何在 Laravel 项目中创建和使用我们自己的 PHP 辅助函数。

目标读者

本篇教程针对有 Laravel 基础知识的开发者,他们希望使用可全局访问的函数整理自己的代码。

创建辅助函数

要添加自己的辅助函数,我们需要首先创建一个新的 PHP 文件来存放它们。让我们在我们的 app 文件夹中创建一个 helpers.php 文件。需要注意的是,这个位置完全取决于个人偏好。我还见过将文件放在 app/Helpers/helpers.php 文件内的做法。所以,你可以自己选择一个你认为最合适的目录。

现在我们已经有了我们的文件,我们可以向其中添加我们的辅助函数。作为本篇教程的基础示例,我们将创建一个超级简单的函数,该函数将分钟转换为小时。

我们来将函数添加到我们的 helpers.php 文件中,如下:

image-20230831163424434

如上例所示,函数本身非常简单。然而,你可能会注意到的一件事是,函数名使用了下划线命名法 (如:seconds_to_hours),而不是像我们常在类方法名上看到的驼峰命名法(如:secondsToHours)。你并不完全必须使用下划线命名法来定义函数名,但你会发现所有的 Laravel 辅助函数都是这样写的。因此,我可能会建议你使用这种格式,以此跟随典型的标准和格式。然而,这完全取决于你自己。

另一件你可能注意到的事是,我们把函数名包含在了一个 'if' 语句中。这是为了防止我们意外地重新声明任何已经被注册的、名字相同的辅助函数。例如,假设我们正在使用一个已经注册了 seconds_to_hours() 函数的包,这将防止我们使用相同的名称注册我们自己的函数。为了解决这个问题,我们可以简单地更改我们自己函数的名称,以避免任何冲突。

在创建辅助函数时,非常重要的一点是,它们只是作为辅助而被使用。它们并不是真正意味着要执行任何业务逻辑,而是帮助你整理你的代码。当然,你可以向它们添加复杂的逻辑,但如果你想这么做,我可能会建议你考虑是否将代码放在别处会更合适,比如 service 类、action 类或 trait。

注册辅助函数

现在我们创建了辅助函数文件,我们需要注册它,以便我们可以使用我们新建的函数。为了实现这一点,我们可以更新我们的 composer.json 文件,这样我们的文件就会在每次请求时加载,并且可以使用。这是可能的,因为 Laravel 在 public/index.php 文件中包含了 Composer 类加载器。

在你的 composer.json 文件中,你应该有一个类似这样的部分:

image-20230831163657381

在这个部分,我们只需要添加以下几行,让 Composer 知道你想要加载你的文件:

image-20230831163716777

你的 composer.json 文件的 autoload 部分现在应该看起来像这样:

image-20230831163732897

现在我们已经手动更新了 composer.json 文件,我们需要运行以下命令来清空我们的 autoload 文件并创建一个新的文件:

composer dump-autoload

使用辅助函数

恭喜你!你的辅助函数现在应该已经设置好并准备使用了。要使用它,你可以简单地使用:

image-20230831163820834

因为它已被注册为全局函数,这就意味着你可以在你的控制器、服务类,甚至其他辅助函数等各种地方使用它。我最喜欢辅助函数的部分是能够在你的 Blade 视图中使用它们。例如,假设我们有一个 TimeServiceClass,包含一个 secondsToHours() 方法,这个方法和我们新建的函数一样。如果我们想在我们的 Blade 视图中使用服务类,我们可能需要这样做:

image-20230831163856927

如你所想,如果这在一个页面的多个地方使用,可能会开始让你的视图看起来有点混乱。

使用多个辅助函数文件

现在我们看到了我们如何注册和使用辅助函数,我们将看看我们如何进一步进行。随着时间的推移,随着你的 Laravel 项目的增长,你可能会发现你有很多的辅助函数都在一个文件中。如你所想,这个文件可能会开始看上去有些乱糟糟的。所以,我们可能想考虑将我们的函数拆分到单独的文件中。

例如,假设我们在 app/helpers.php 文件中有许多辅助函数;有些与金钱相关,有些与时间相关,有些与用户设置相关。我们可能会首先将这些函数拆分到单独的文件中,如:app/Helpers/money.phpapp/Helpers/time.php,和 app/Helpers/settings.php。这意味着我们现在可以删除我们的 app/helpers.php 文件,因为我们不再需要它了。

之后,我们可以以类似先前的方式更新我们的 composer.json 文件,以便它现在加载我们的 3 个新文件:

image-20230831164020039

我们需要记住,通过运行以下命令,再次清空 Composer 的 autoload 文件:

composer dump-autoload

现在你应该能够继续使用你的函数,并分拆到逻辑上独立的文件中。

小结

这篇教程向你展示了如何为你的 Laravel 项目创建和注册你自己的 PHP 辅助函数。记住,不要用它们来执行复杂的业务逻辑,而应看作是整理小量代码的一种方式。


点赞 取消点赞 收藏 取消收藏

<< 上一篇: 性能优化篇

>> 下一篇: 面向接口编程