Laravel立面:服务的方便访问点
Laravel的外墙提供了一种简化与服务交互的方法,从而通过用户友好的界面简化了访问。 最初,立面登录方法似乎令人困惑,但是了解其作用阐明了其效用。 立面是Laravel服务容器中基础服务的方便代理。 由于
>方法,找到链接到任何给定立面的服务非常简单。此方法返回注册的服务名称。
getFacadeAccessor()
例如,
外观的登录器看起来像这样:DB
>
// Illuminate\Support\Facades\DB; protected static function getFacadeAccessor() { return 'db'; }字符串
识别外墙使用的容器中的服务。 可以使用Tinker进行验证:'db'
public function __call($method, $parameters) { if (static::hasMacro($method)) { return $this->macroCall($method, $parameters); } return $this->connection()->$method(...$parameters); }没有指定的连接,
默认为已配置的连接(例如,在上面的示例中)。DatabaseManager
sqlite
Laravel文档提供了有关立面功能的全面详细信息和可用外墙的完整列表。
创建自定义外墙
>对应用程序开发并不是严格必要的,但是创建自定义立面可以提高生产力,尤其是对于经常使用的服务。 当与助手或专用
>名称空间内合作时,这尤其有益。 这种方法可以平衡拉拉维尔的灵活性和既定的惯例。要生成立面,请使用工匠命令: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中文网其他相关文章!