首页 >后端开发 >php教程 >了解如何在Laravel创建自定义立面

了解如何在Laravel创建自定义立面

Karen Carpenter
Karen Carpenter原创
2025-03-06 02:37:12533浏览

Laravel立面:服务的方便访问点

Laravel的外墙提供了一种简化与服务交互的方法,从而通过用户友好的界面简化了访问。 最初,立面登录方法似乎令人困惑,但是了解其作用阐明了其效用。 立面是Laravel服务容器中基础服务的方便代理。 由于

>方法,找到链接到任何给定立面的服务非常简单。此方法返回注册的服务名称。

getFacadeAccessor()例如,

外观的登录器看起来像这样:DB>

// Illuminate\Support\Facades\DB;

protected static function getFacadeAccessor()
{
    return 'db';
}
字符串

识别外墙使用的容器中的服务。 可以使用Tinker进行验证:'db'

Learn how to create custom Facades in Laravel

有些立面可能会将方法委托给管理类别类,而管理类又与低级宏或数据库连接类交互:

public function __call($method, $parameters)
{
    if (static::hasMacro($method)) {
        return $this->macroCall($method, $parameters);
    }

    return $this->connection()->$method(...$parameters);
}
没有指定的连接,

默认为已配置的连接(例如,在上面的示例中)。DatabaseManager sqliteLaravel文档提供了有关立面功能的全面详细信息和可用外墙的完整列表。

创建自定义外墙

>对应用程序开发并不是严格必要的,但是创建自定义立面可以提高生产力,尤其是对于经常使用的服务。 当与助手或专用

>名称空间内合作时,这尤其有益。 这种方法可以平衡拉拉维尔的灵活性和既定的惯例。

要生成立面,请使用工匠命令: AppFacades

>假设您已经在应用程序的服务提供商中定义了一项服务,则该立面将如下实现:

或者,如果未定义别名或服务提供商中未使用字符串,则可以直接使用完全合格的类名称:
php artisan make:class App/Facades/Example

AppExampleService幕墙的一个重要优势是在测试过程中易于嘲笑基础服务:

namespace App\Facades;

use Illuminate\Support\Facades\Facade;

class Example extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'example_service';
    }
}
Laravel没有外墙,提供类似模拟功能之类的方法:

protected static function getFacadeAccessor()
{
    return \App\ExampleService::class;
}
>最终,使用外墙和其他方法之间的选择取决于个人偏好和项目需求。 但是,对于经常访问的服务,立面可以显着提高代码的可读性和可维护性,而无需牺牲依赖注入的好处。

以上是了解如何在Laravel创建自定义立面的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn