nerd/glue

Glue 是一个简单的库,帮助各种库协同工作,简化了诸如依赖缓存实现等问题,通过创建一个集中式工厂来创建此类对象。这是一种依赖注入的形式。

1.0 2015-11-15 18:06 UTC

This package is auto-updated.

Last update: 2024-08-29 04:14:29 UTC


README

Glue 是一个简单的 PHP 库,帮助各种库以更少的努力协同工作。它主要提供了一个集中式工厂方法,根据接口定义获取功能。例如;如果你的库可以利用缓存,你可以通过简单地调用以下代码来轻松地获取缓存接口:

$cache = \Nerd\Glue::get(Psr\Cache\CachePoolInterface::class);

现在你可以保证 $cache 是一个实现了 Psr\Cache\CachePoolInterface 的类,并且你可以按需使用它。

示例 1:数据库访问

如果你的库需要访问数据库,你可以非常方便地这样做

$db = \Nerd\Glue::get(\PDO::class);

这将根据应用程序的配置提供 PDO 对象。框架先前必须做以下操作

\Nerd\Glue::singletonFactory(\PDO::class, function() {
    return new PDO("your-connection-string", "user", "pass");
});

示例 2:缓存

$cache = \Nerd\Glue::get(\Psr\Cache\CachePoolInterface);
$item = $cache->getItem("some-cache-key");
if(!$item->exists()) {
    // Let's generate the item
    $value = "Some string".time();
    $item->set($value);
    $item->setExpiration(30);
    $cache->save($item);
} else {
    $value = $item->get();
}

标准化接口

建议你通过 www.php-fig.org 上的流程请求已经标准化的接口,或者标准 PHP 接口。这意味着以下是一些好的候选者

  • Psr\Log\LoggerInterface
  • Psr\Cache\CachePoolInterface
  • Psr\Http\Message\ResponseInterface
  • PDO

依赖注入容器

https://github.com/container-interop/fig-standards/blob/master/proposed/container.md 上有一个与依赖注入相关的非常有趣的提案草案。依赖注入基本上做了 Glue 所做的事情,但方式更复杂。有趣的是,在这种情况下,Glue 仍然有其用途,因为你需要一种方式来检索依赖注入容器。

$container = \Nerd\Glue::get(\Psr\Container\ContainerInterface::class);

此外,如果这个提案被批准,Glue 将自然地与配置的依赖注入容器集成。