m1 /stash-silex
StashSilex 是一个为流行的缓存库 Stash 提供服务的 Silex 服务提供商和会话处理器
Requires
- php: >=5.3.0
- silex/silex: 1.*
- tedivm/stash: ^0.14
Requires (Dev)
- m1/vars: ~0.6
- monolog/monolog: ^1.17
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
- symfony/yaml: ~2.8
This package is auto-updated.
Last update: 2024-09-21 20:15:42 UTC
README
StashSilex 是一个 Silex 服务提供商和会话处理器,用于流行的缓存库 Stash。
需求
StashSilex 需要 PHP 版本 5.3+
,Silex 版本 1.*
和 Stash 版本 0.11+
安装
通过 Composer
$ composer require M1/StashSilex
使用方法
您使用 StashServiceProvider 以注册服务提供商的常规语法注册服务提供商
$app->register(new M1\StashSilex\StashServiceProvider());
在注册服务提供商时,您可以使用一些选项。
池
您可以使用 pool.options
注册一个池,或者使用 pools.options
注册多个池,这与 Doctrine Service Provider 的工作方式相同。
注册单个池
$app->register(new M1\StashSilex\StashServiceProvider(), array( 'pool.options' => array( 'driver' => 'FileSystem', 'options' => array( 'path' => __DIR__.'/../../app/cache', ), ) )); $item = $app['pool']->getItem('path/to/item');
注册多个池
$app->register(new M1\StashSilex\StashServiceProvider(), array( 'pools.options' => array( 'fs' => array( 'driver' => 'FileSystem', 'options' => array( 'path' => __DIR__.'/../../app/cache', ), ), 'mc' => array( 'driver' => 'Memcache', 'options' => array( 'servers' => array( '127.0.0.1', '11211' ) ), ), ), )); // same thing $item1 = $app['pools']['fs']->getItem('path/to/item'); $item1 = $app['pool']->getItem('path/to/item'); $item2 = $app['pools']['mc']->getItem('path/to/item');
您可以通过 $app['pool']
和 $app['pools']['your_pool_key']
访问您的池。如果您有多个池,则第一个注册的池将通过 $app['pool']
可用。
例如,在上面的代码中,FileSystem
池将通过 $app['pool']
和 $app['pools']['fs']
可用。
驱动程序
驱动程序选项基于可用驱动程序的类名,请在此处查看 Stash 定义的类名。驱动程序名称是区分大小写的。
您可以通过 options
设置驱动程序选项,如下所示
$app->register(new M1\StashSilex\StashServiceProvider(), array( 'pool.options' => array( 'driver' => 'FileSystem', 'options' => array( 'path' => __DIR__.'/../../app/cache', ), ) ));
您可以在 此处 查看每个驱动程序可用的完整选项列表。如果没有定义驱动程序,则默认驱动程序是 Ephemeral
驱动程序。
记录器
您也可以通过 logger
选项设置池的记录器,如下所示
$app->register(new Silex\Provider\MonologServiceProvider(), array( 'monolog.logfile' => __DIR__.'/../../app/logs/app/dev.log', )); $app->register(new M1\StashSilex\StashServiceProvider(), array( 'pool.options' => array( 'driver' => 'FileSystem', 'options' => array( 'path' => __DIR__.'/../../app/cache', ), 'logger' => 'monolog' ) ));
由于 MonologServiceProvider
填充了 $app['monolog']
,记录器是 monolog
。记录器选项是一个字符串,您可以通过 $app
访问您的记录器服务。
例如,如果您决定不通过服务提供商使用 Monolog
(不推荐),您可以使用自定义记录器如下所示
$app['mylog'] = $app->share(function($app) { $logger = new \Monolog\Logger('mylog'); $logger->pushHandler(new Monolog\Handler\StreamHandler('/logfile/mylog.log', Logger::INFO)); return $logger; }); $app->register(new M1\StashSilex\StashServiceProvider(), array( 'pool.options' => array( 'driver' => 'FileSystem', 'options' => array( 'path' => __DIR__.'/../../app/cache', ), 'logger' => 'mylog' ) ));
会话
您可以通过几种不同的方式通过 Stash 处理会话。
第一种方式是通过服务提供商。
以下示例创建了具有默认设置的会话
$app->register(new M1\StashSilex\StashServiceProvider(), array( 'pool.options' => array( 'driver' => 'FileSystem', 'options' => array( 'path' => __DIR__.'/../../app/cache', ), 'session' => true ) ));
您也可以设置 ttl
和 session prefix
(在 Stash 中存储的命名空间,更多信息 请在此处查看)如下所示
$app->register(new M1\StashSilex\StashServiceProvider(), array( 'pool.options' => array( 'driver' => 'FileSystem', 'options' => array( 'path' => __DIR__.'/../../app/cache', ), 'session' => array( 'prefix' => 'session_name', 'expiretime' => 3200 ) ) ));
您还可以手动设置 SessionHandler
$app->register(new M1\StashSilex\StashServiceProvider(), array( 'pool.options' => array( 'driver' => 'FileSystem', 'options' => array( 'path' => __DIR__.'/../../app/cache', ) ) )); // Without options $app['session.storage.handler'] = $app->share(function ($app) { return new M1\StashSilex\StashSessionHandler($app['pool']); }); // With options $app['session.storage.handler'] = $app->share(function ($app) { return new M1\StashSilex\StashSessionHandler($app['pool'], array( 'prefix' => 'session_name', 'expiretime' => 3200 )); });
建议
与通过数组设置选项相比,考虑使用类似于 m1/vars
的配置加载器,其中您可以通过文件加载池(s)的配置,如下所示
# example.yml pools: filesystem: driver: FileSystem options: path: %dir%/../../app/cache session: prefix: session_name expiretime: 3200
$app->register(new M1\Vars\Provider\Silex\VarsServiceProvider('example.yml'), array( 'vars.options' => array( 'variables' => array( 'dir' => __DIR__ ), ))); $app->register(new M1\StashSilex\StashServiceProvider(), array( 'pools.options' => $app['vars']['pools'] ));
这样可以使对配置的小更改变得更加容易,而不必深入代码。
更改日志
请参阅 CHANGELOG 以获取有关最近更改的更多信息。
测试
$ composer test
贡献
请参阅 CONTRIBUTING 和 CONDUCT 了解详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 hello@milescroxford.com 而不是使用问题跟踪器。
致谢
许可证
MIT 许可证(MIT)。请参阅 许可证文件 获取更多信息。