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 将自然地与配置的依赖注入容器集成。