首先,我宁愿让Laravel 官方站点谈论助手。
Laravel包含各种全局的“辅助” PHP函数。 这些功能中的许多功能都由框架本身使用。 但是,如果发现它们方便,则可以在自己的应用程序中自由使用它们。
因此,基本上,Laravel中的帮助程序是内置的实用程序函数,您可以从应用程序中的任何位置调用它们。 如果核心框架没有提供它们,那么您可能最终会开发自己的帮助器类。
尽管该内核已经提供了各种各样的帮助程序,但是总有可能您需要自己的并且想要开发一个帮助程序,因此您不必在这里和那里重复相同的代码,从而实现了更好的可维护性。 您将在本教程中学习如何创建自定义Laravel帮助器。
Laravel的助手
正如我们之前讨论的那样,Laravel框架的核心中有很多可用的帮助器。 根据它们提供的功能将它们分组在一起。 这是帮手组的列表。
数组
该组中的帮助程序提供了操作数组元素的功能。 通常,您想对数组元素执行不同的操作。 因此,这是您首先应查看所寻找内容是否已经存在的地方。
路径
我发现该类别的助手最有用。 它们返回不同目录(例如,app,storage,config等)的标准路径。 我敢打赌,您已经在Laravel应用程序中使用了大多数这些帮助器。
弦乐
字符串操作是您日常应用程序开发中不可避免的事情。 尽管PHP本身提供了许多字符串操作功能,但在本节中您会发现更多有用的东西。
网址
在此类别中,您会发现很少,但是它们在整个应用程序中都使用。 它们用于生成路线,资产和表单操作URL。
杂
此类别包含的助手提供了各种功能,从日志记录到调试,等等。
有关Laravel帮助者的完整参考资料,没有比官方文档更好的地方了。
创建您的第一个自定义助手
现在,您已经对Laravel帮助器及其用途有了基本的了解。 在本节中,我将继续演示如何创建自己的自定义帮助程序,该自定义帮助程序可在Laravel应用程序中全局使用。
为了使事情简单明了,它将成为一个非常基本的助手,它使用一个userid并返回一个用户名作为响应。 当然,这听起来并不花哨,但是我相信足以证明这个概念,并且您可以随时扩展它以满足您的复杂需求。
我假设您的数据库中有一个用户表,并且它至少有两个字段-用户标识和用户名。
Laravel助手的骨架
在继续进行并实际创建文件之前,让我们快速看一下将在本文的其余部分中创建的文件。
-
app/Helpers/Envato/User.php
:这是我们的帮助文件,其中包含了我们的帮助程序逻辑。 -
app/Providers/EnvatoServiceProvider.php
:这是一个加载我们的自定义帮助程序文件的自定义服务提供程序文件。 -
config/app.php
:在此文件中,我们将声明自定义服务提供程序,它还可以帮助我们为帮助程序定义别名,这样我们就不必使用帮助程序的完全限定的类名。 -
routes/web.php
:一个相当标准的Laravel路由文件,我们将在其中实际测试我们的助手。
创建助手文件
尽管您可以将帮助程序文件放置在应用程序中的任何位置,但是更直观,更标准的方法建议应将其放在app
目录下。
因此,继续在app
下创建一个Helpers/Envato
目录,并创建一个包含以下内容的User.php
文件。 当然,您可以将其直接放置在app
或app/Helpers
目录下,但是提供额外的级别可以使我们以良好的状态来组织我们的助手,尤其是当您将有很多助手时。
<?php
//app/Helpers/Envato/User.php
namespace App\Helpers\Envato;
use Illuminate\Support\Facades\DB;
class User {
/**
* @param int $user_id User-id
*
* @return string
*/
public static function get_username($user_id) {
$user = DB::table('users')->where('userid', $user_id)->first();
return (isset($user->username) ? $user->username : '');
}
}
该文件以一个非常标准的名称空间声明开头:
namespace App\Helpers\Envato;
我们的自定义帮助程序的目的是根据用户ID检索用户名。 因此,我们需要与数据库进行交互,这迫使我们包括DB Facade。
use Illuminate\Support\Facades\DB;
对于不熟悉Laravel Facades的用户,这只是访问服务容器中对象的另一种便捷方式。 或者,您可以使用依赖项注入。
向前迈进,我们的助手将得到具体实现。 如您所见,有一个静态方法定义了基于用户ID检索用户名