effectra/facade

Effectra Facade 类。

v1.0.0 2023-05-26 21:40 UTC

This package is auto-updated.

Last update: 2024-09-18 12:45:48 UTC


README

Facade 类是一个实用类,它提供了一种简化接口,用于访问您的 PHP 应用程序中的类或服务。

安装

Facade 类是一个独立类,不需要安装。您只需将类文件包含到您的项目中即可。

composer require effectra/facade

用法

要使用 Facade 类,请按照以下步骤操作

  1. 通过您的自定义外观类扩展 Facade 类。
  2. 在您的自定义外观类中实现 getFacadeAccessor() 方法。
  3. 可选地,使用 setResolvedInstance()setContainer() 方法分别设置解析的实例或容器。
  4. 使用您自定义的外观类的静态方法访问底层类或服务的功能。

以下是一个示例

use Effectra\Facade;

class MyFacade extends Facade
{
    protected static function getFacadeAccessor()
    {
        return MyService::class;
    }
}

// Usage
MyFacade::setResolvedInstance(new MyService());
MyFacade::someMethod();

在这个示例中,我们通过扩展 Facade 类创建了一个自定义外观类 MyFacade。在 MyFacade 中的 getFacadeAccessor() 方法返回我们想要通过外观访问的 MyService 类的类名。

通过使用 setResolvedInstance() 设置解析的实例,我们直接向外观提供了 MyService 的实例。这使得我们可以通过 MyFacade 的静态方法访问 MyService 的方法。

您还可以使用容器而不是直接设置解析的实例。为此,创建一个容器,将类名绑定到容器中的键,并使用 setContainer() 设置容器。

use Effectra\Facade;
use Effectra\Container\Container;

class MyFacade extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'myService';
    }
}

// Usage
$container = new Container();
$container->bind('myService', MyService::class);

MyFacade::setContainer($container);
MyFacade::someMethod();

在这个示例中,我们使用了一个简单的 Container 类,将 MyService 的类名绑定到键 'myService'。通过使用 setContainer() 设置容器,当调用静态方法时,Facade 类从容器中解析实例。

请确保将 'MyService''someMethod()' 替换为您在应用程序中使用的实际类名和方法名。

贡献

欢迎贡献!如果您发现任何问题或想添加新功能或改进,请提交问题或拉取请求。

在贡献之前,请确保审查贡献指南

许可

此类是开源的,可在MIT 许可证下使用。