辅助函数篇
引言
辅助函数在你的 Laravel 项目中可以起到极大的作用。它们以一种清晰、简洁的方式简化了你项目中的代码。Laravel 默认提供了许多辅助函数,如 dd()
,abort()
和 session()
。但随着你的项目开始发展,你可能会发现自己希望添加自己的函数。
在这一篇教程中,我们将讨论如何在 Laravel 项目中创建和使用我们自己的 PHP 辅助函数。
目标读者
本篇教程针对有 Laravel 基础知识的开发者,他们希望使用可全局访问的函数整理自己的代码。
创建辅助函数
要添加自己的辅助函数,我们需要首先创建一个新的 PHP 文件来存放它们。让我们在我们的 app
文件夹中创建一个 helpers.php
文件。需要注意的是,这个位置完全取决于个人偏好。我还见过将文件放在 app/Helpers/helpers.php
文件内的做法。所以,你可以自己选择一个你认为最合适的目录。
现在我们已经有了我们的文件,我们可以向其中添加我们的辅助函数。作为本篇教程的基础示例,我们将创建一个超级简单的函数,该函数将分钟转换为小时。
我们来将函数添加到我们的 helpers.php
文件中,如下:
如上例所示,函数本身非常简单。然而,你可能会注意到的一件事是,函数名使用了下划线命名法 (如:seconds_to_hours
),而不是像我们常在类方法名上看到的驼峰命名法(如:secondsToHours
)。你并不完全必须使用下划线命名法来定义函数名,但你会发现所有的 Laravel 辅助函数都是这样写的。因此,我可能会建议你使用这种格式,以此跟随典型的标准和格式。然而,这完全取决于你自己。
另一件你可能注意到的事是,我们把函数名包含在了一个 'if' 语句中。这是为了防止我们意外地重新声明任何已经被注册的、名字相同的辅助函数。例如,假设我们正在使用一个已经注册了 seconds_to_hours()
函数的包,这将防止我们使用相同的名称注册我们自己的函数。为了解决这个问题,我们可以简单地更改我们自己函数的名称,以避免任何冲突。
在创建辅助函数时,非常重要的一点是,它们只是作为辅助而被使用。它们并不是真正意味着要执行任何业务逻辑,而是帮助你整理你的代码。当然,你可以向它们添加复杂的逻辑,但如果你想这么做,我可能会建议你考虑是否将代码放在别处会更合适,比如 service 类、action 类或 trait。
注册辅助函数
现在我们创建了辅助函数文件,我们需要注册它,以便我们可以使用我们新建的函数。为了实现这一点,我们可以更新我们的 composer.json
文件,这样我们的文件就会在每次请求时加载,并且可以使用。这是可能的,因为 Laravel 在 public/index.php
文件中包含了 Composer 类加载器。
在你的 composer.json
文件中,你应该有一个类似这样的部分:
在这个部分,我们只需要添加以下几行,让 Composer 知道你想要加载你的文件:
你的 composer.json
文件的 autoload
部分现在应该看起来像这样:
现在我们已经手动更新了 composer.json
文件,我们需要运行以下命令来清空我们的 autoload 文件并创建一个新的文件:
composer dump-autoload
使用辅助函数
恭喜你!你的辅助函数现在应该已经设置好并准备使用了。要使用它,你可以简单地使用:
因为它已被注册为全局函数,这就意味着你可以在你的控制器、服务类,甚至其他辅助函数等各种地方使用它。我最喜欢辅助函数的部分是能够在你的 Blade 视图中使用它们。例如,假设我们有一个 TimeServiceClass
,包含一个 secondsToHours()
方法,这个方法和我们新建的函数一样。如果我们想在我们的 Blade 视图中使用服务类,我们可能需要这样做:
如你所想,如果这在一个页面的多个地方使用,可能会开始让你的视图看起来有点混乱。
使用多个辅助函数文件
现在我们看到了我们如何注册和使用辅助函数,我们将看看我们如何进一步进行。随着时间的推移,随着你的 Laravel 项目的增长,你可能会发现你有很多的辅助函数都在一个文件中。如你所想,这个文件可能会开始看上去有些乱糟糟的。所以,我们可能想考虑将我们的函数拆分到单独的文件中。
例如,假设我们在 app/helpers.php
文件中有许多辅助函数;有些与金钱相关,有些与时间相关,有些与用户设置相关。我们可能会首先将这些函数拆分到单独的文件中,如:app/Helpers/money.php
,app/Helpers/time.php
,和 app/Helpers/settings.php
。这意味着我们现在可以删除我们的 app/helpers.php
文件,因为我们不再需要它了。
之后,我们可以以类似先前的方式更新我们的 composer.json
文件,以便它现在加载我们的 3 个新文件:
我们需要记住,通过运行以下命令,再次清空 Composer 的 autoload 文件:
composer dump-autoload
现在你应该能够继续使用你的函数,并分拆到逻辑上独立的文件中。
小结
这篇教程向你展示了如何为你的 Laravel 项目创建和注册你自己的 PHP 辅助函数。记住,不要用它们来执行复杂的业务逻辑,而应看作是整理小量代码的一种方式。
No Comments