ray / symfony-session-module
Ray.Di 的 Symfony 会话模块
1.1.0
2016-07-08 12:33 UTC
Requires
- php: >=5.6
- ray/di: ~2.3
- symfony/http-foundation: ~3.1
Requires (Dev)
- fabpot/php-cs-fixer: ~1.11
- phpmd/phpmd: ~2.4
- phpunit/phpunit: ~5.4
- squizlabs/php_codesniffer: ~2.6
This package is not auto-updated.
Last update: 2024-09-12 02:22:52 UTC
README
为 Symfony 会话 和 Ray.Di 提供的模块
安装
Composer 安装
$ composer require ray/symfony-session-module
模块安装
PdoSessionModule(例如,用于 MySQL)
-
在您的数据库中创建
sessions
表。$ ./vendor/ray/symfony-session-module/bin/initPdoSession 'mysql:host=localhost;dbname=mydb' 'myname' 'mypass'
-
安装模块。
use Ray\Di\AbstractModule; use Ray\SymfonySessionModule\PdoSessionModule; class AppModule extends AbstractModule { protected function configure() { $pdo = new \PDO('mysql:host=localhost;dbname=mydb', 'myname', 'mypass'); $options = [ 'cookie_secure' => 1, 'cookie_httponly' => 1, 'cookie_lifetime' => 60 * 60 * 24 ]; $this->install(new PdoSessionModule($pdo, $options)); } }
DI 特性
- SessionInject 用于
Symfony\Component\HttpFoundation\Session\SessionInterface
接口
会话生命周期管理
对于每个请求,您的应用程序可以检查会话cookie是否已过期。如果会话cookie已过期,则抛出 SessionExpiredException
。
配置
-
安装
SessionalModule
。use Ray\Di\AbstractModule; use Ray\SymfonySessionModule\PdoSessionModule; use Ray\SymfonySessionModule\SessionalModule; class AppModule extends AbstractModule { protected function configure() { $this->install(new PdoSessionModule($pdo, $options)); $this->install(new SessionalModule); // <-- } }
-
使用
@Sessional
注解标记类或方法。当标记为
@Sessional
的类中的任何方法执行时,会话将自动启动并检查会话cookie。use Ray\SymfonySessionModule\Annotation\Sessional; /** * @Sessional */ class SomeController { public function fooAction() { // session is automatically started and session cookie is checked. } }
当标记为
@Sessional
的方法执行时,会话将自动启动并检查会话cookie。use Ray\SymfonySessionModule\Annotation\Sessional; class SomeController { /** * @Sessional */ public function fooAction() { // session is automatically started and session cookie is checked. } public function barAction() { // session is NOT started. } }
单元测试
MockSessionModule
提供了用于单元测试的 内存 会话机制。任何会话数据都不会持久化到存储。
use Ray\Di\AbstractModule; use Ray\SymfonySessionModule\MockSessionModule; use Ray\SymfonySessionModule\SessionalModule; class AppModule extends AbstractModule { protected function configure() { $this->install(new MockSessionModule); // <-- $this->install(new SessionalModule); } }
演示
$ php docs/demo/run.php
// Session is started!
要求
- PHP 5.6+
- hhvm
更多文档
- 关于 Symfony 的会话管理的官方文档