m1/stash-silex

StashSilex 是一个为流行的缓存库 Stash 提供服务的 Silex 服务提供商和会话处理器

1.0.0 2016-08-26 12:42 UTC

This package is auto-updated.

Last update: 2024-09-21 20:15:42 UTC


README

Author Latest Version on Packagist Software License Build Status Coverage Status Quality Score

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
    )
));

您也可以设置 ttlsession 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

贡献

请参阅 CONTRIBUTINGCONDUCT 了解详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 hello@milescroxford.com 而不是使用问题跟踪器。

致谢

许可证

MIT 许可证(MIT)。请参阅 许可证文件 获取更多信息。